تفاوت عملگرهای & و && در سیشارپ
عملگرهای & و && هر دو به معنی "و" (AND) هستن و توی منطق برنامهنویسی برای ترکیب شرطها استفاده میشن، اما یه تفاوت کلیدی بینشون وجود داره که میتونه توی عملکرد کدمون تأثیر بذاره. آمادهاید این راز رو کشف کنید؟ با ما همراه باشید!
عملگر & AND معمولی
وقتی از & استفاده میکنید، به کامپایلر میگید که همه شرطها رو بدون استثنا بررسی کنه، حتی اگه یکی از شرطها false باشه. یعنی فرقی نمیکنه نتیجه یه شرط چی باشه، سیشارپ تکتک شرطها رو چک میکنه و بعد نتیجه نهایی رو برمیگردونه. این عملگر وقتی مفیده که بخواهید مطمئن بشید همه شرطها اجرا شدن، مثلاً وقتی هر شرط یه کار خاص (مثل یه محاسبه) انجام میده.
مثال:
int a = 5;
int b = 0;
bool result = (a > 0 & b != 0); // هر دو شرط بررسی میشن
Console.WriteLine(result); // خروجی: false
عملگر && AND کوتاهمدار
حالا بیایید سراغ && بریم، که یه جورایی باهوشتره! این عملگر به محض اینکه یه شرط false بشه، دیگه بقیه شرطها رو بررسی نمیکنه و مستقیم میره سراغ نتیجه. به این رفتار میگن ارزیابی کوتاهمدار (Short-Circuit Evaluation). چرا این مهمه؟ چون باعث میشه کدمون سریعتر اجرا بشه و از خطاهای احتمالی (مثل تقسیم بر صفر) جلوگیری کنه، بهخصوص وقتی شرطهای بعدی به نتیجه شرط اول وابسته باشن.
مثال:
int a = 5;
int b = 0;
bool result = (a > 0 && b != 0); // شرط دوم بررسی نمیشه چون b == 0
Console.WriteLine(result); // خروجی: false
تفاوت اصلی چیه؟
&: همه شرطها رو همیشه چک میکنه، حتی اگه لازم نباشه.
&&: به محض دیدن یه false، دست از کار میکشه و ادامه نمیده.
مثال عملیتر:
int x = 0;
bool check = (x != 0 & 10 / x > 2); // خطا میده چون 10 / 0 بررسی میشه
int x = 0;
bool check = (x != 0 && 10 / x > 2); // خطا نمیده چون شرط دوم چک نمیشه
کی از کدوم استفاده کنیم؟
از & وقتی استفاده کنید که بخواهید همه شرطها اجرا بشن، مثلاً برای محاسبات یا بررسیهای خاص.
از && وقتی استفاده کنید که بخواهید کدهاتون بهینهتر و ایمنتر باشه و نیازی به چک کردن بقیه شرطها بعد از یه false نباشه (که توی اکثر موارد همین رو میخواهیم!).