CodeShot
Midسختی 3 از ۵· در 70٪ مصاحبه‌های این حوزه پرسیده شده

تفاوت == و Equals() در C# چیست؟

نشان کردن

پاسخ کوتاه

== معمولاً مقایسه مقدار یا Reference است؛ Equals() برای مقایسه منطقی Objectها استفاده می‌شود.

پاسخ کامل

برای Value Typeها، == و Equals() هر دو مقدار را مقایسه می‌کنند. برای Reference Typeها، == به‌طور پیش‌فرض Referenceها (آدرس‌ها) را مقایسه می‌کند مگر Override شده باشد، در حالی که Equals() قابل Override است تا مقایسه منطقی/محتوایی دو Object را انجام دهد (مثلاً در recordها به‌صورت خودکار این کار انجام می‌شود).

اشتباه رایج

❌ فرض کردن این‌که == همیشه محتوای دو Object را مقایسه می‌کند، در حالی که برای کلاس‌های معمولی فقط Reference را مقایسه می‌کند.