
نوشته شده توسط
Netsky
دليل اين مورد چيه :
What is the difference between == and object.Equals
سلام.
برای value type ها، مثل int، byte و ... تفاوتی نمیکنه، اما برای Reference Type ها این دو دستور متفاوت عمل می کنن.
operator == هنگامی استفاده میشه که بخواهید هویت دو Entity رو با هم مقایسه کنید. به این کد دقت کنید:
Font font1 = new Font("verdana", 12f, FontStyle.Bold);
Font font2 = new Font("verdana", 12f, FontStyle.Bold);
Console.Write(font1 == font2); /*FALSE*/
Console.Write(font1.Equals(font2)); /*TRUE*/
اینجا دارم دو تا فونت با مشخصات یکسان ایجاد میکنم. هر دو Verdana با سایز 12 و Bold هستن، پس با عملا با هم برابرن. همونطوریکه در کد فوق میبینید، font1==font2 نیستش، چون Reference به این دو فونت متفاوته. در واقع اونها دارن به دو object متفاوت Refer میکنن.
اما font1.Equals(font2) هستش، چون هر دو فونت Verdana با سایز 12 و Bold هستن.
موفق باشید.