۱۴۰۴/۰۷/۰۹
۱. عملگر
✅ ۲. متد
✅ ۳. مرتبسازی با
مقایسه اشیاء در C#
۱. عملگر ==
- رفتار پیشفرض:
- برای Value Typeها مثل
int,bool→ مقدار واقعی را مقایسه میکند. - برای Reference Typeها مثل
class→ آدرس (Reference) را مقایسه میکند.
- برای Value Typeها مثل
مثال:
class Person { public string Name; }
Person p1 = new Person { Name = "Ali" };
Person p2 = new Person { Name = "Ali" };
Console.WriteLine(p1 == p2); // False → چون دو شیء مجزا در Heap هستند
اگر بخواهیم
==محتوا را مقایسه کند باید عملگر را overload کنیم.
✅ ۲. متد Equals()
Equals()یک متد مجازی از کلاس پایه Object است.- میتوان آن را override کرد تا محتوا را مقایسه کند.
مثال:
class Person
{
public string Name;
public override bool Equals(object obj)
{
if (obj is Person other)
return this.Name == other.Name;
return false;
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
}
Person p1 = new Person { Name = "Ali" };
Person p2 = new Person { Name = "Ali" };
Console.WriteLine(p1.Equals(p2)); // True
⚠ نکته مهم: وقتی Equals() را override میکنی باید حتماً GetHashCode() را هم override کنی تا در Dictionary/HashSet درست کار کند.
✅ ۳. مرتبسازی با IComparable<T>
اگر بخواهی یک کلاس در Sort یا OrderBy قابل مقایسه باشد، باید اینترفیس IComparable<T> را پیادهسازی کنی.
مثال:
class Person : IComparable<Person>
{
public string Name;
public int Age;
public int CompareTo(Person other)
{
return this.Age.CompareTo(other.Age); // مرتبسازی بر اساس سن
}
}
List<Person> list = new List<Person>
{
new Person { Name = "Ali", Age = 30 },
new Person { Name = "Sara", Age = 25 }
};
list.Sort();
🔎 جدول مقایسه برای آزمون
| روش | قابل override | کاربرد | پیشفرض برای Class | پیشفرض برای Struct |
|---|---|---|---|---|
== | بله (operator overload) | مقایسه سریع | مقایسه Reference | مقایسه مقدار |
Equals() | بله | مقایسه محتوا | مقایسه Reference | مقایسه مقدار |
IComparable<T> | بله | مرتبسازی (Sort, OrderBy) | — | — |
✅ جمعبندی نکات مهم آزمونی
==→ برای Reference Type فقط آدرس را مقایسه میکند مگر overload شود.Equals()→ اگر override نشده باشد مثل==رفتار میکند.IComparable<T>→ برای مرتبسازی استفاده میشود.
Accept Cookies
[your-shortcode]