हम कर्मचारी वर्ग, ई और ई1 के दो उदाहरण बना रहे हैं। e को toe1 सौंपा गया है। दोनों ऑब्जेक्ट एक ही संदर्भ की ओर इशारा कर रहे हैं, इसलिए हम सभी बराबर के लिए सही अनुमानित आउटपुट प्राप्त करेंगे।
दूसरे मामले में हम देख सकते हैं कि, भले ही गुण मान समान हों। बराबर रिटर्न गलत है। अनिवार्य रूप से, जब तर्क विभिन्न वस्तुओं का जिक्र कर रहे हों। समान मूल्यों की जांच नहीं करते हैं और हमेशा गलत होते हैं।
उदाहरण 1
class Program{ static void Main(string[] args){ Employee e = new Employee(); e.Name = "Test"; e.Age = 27; Employee e2 = new Employee(); e2 = e; var valueEqual = e.Equals(e2); Console.WriteLine(valueEqual); //2nd Case Employee e1 = new Employee(); e1.Name = "Test"; e1.Age = 27; var valueEqual1 = e.Equals(e1); Console.WriteLine(valueEqual1); Console.ReadLine(); } } class Employee{ public int Age { get; set; } public string Name { get; set; } }
आउटपुट
True False
उदाहरण 2
class Program{ static void Main(string[] args){ Employee e = new Employee(); e.Name = "Test"; e.Age = 27; Employee e2 = new Employee(); e2 = e; var valueEqual = e.Equals(e2); Console.WriteLine(valueEqual); Employee e1 = new Employee(); e1.Name = "Test"; e1.Age = 27; var valueEqual1 = e.Equals(e1); Console.WriteLine(valueEqual1); Console.ReadLine(); } } class Employee{ public int Age { get; set; } public string Name { get; set; } public override bool Equals(object? obj){ if (obj == null) return false; if (this.GetType() != obj.GetType()) return false; Employee p = (Employee)obj; return (this.Age == p.Age) && (this.Name == p.Name); } public override int GetHashCode(){ return Age.GetHashCode() ^ Name.GetHashCode(); } }
आउटपुट
True True