تیر ۶, ۱۳۹۸ Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

دستورات سی‌شارپ، می‌توانند به صورت checked و unchecked اجرا شوند.

برای درک کاربرد این دو عملگر و روش استفاده از آنها، ابتدا به مثال زیر دقت کنید:

byte a = 255;
a++;
byte b = 255;
b += 2;
 
// a = 0
// b = 1

 

همانطور که می‌دانید، نوع بایت فقط می‌تواند شامل عددی بین ۰ تا ۲۵۵ باشد؛ و در کد بالا که مقدار بایت از ۲۵۵ زیاد شده است، موجب سر ریز خواهد شد و مقدار بایت، از ابتدای بازه مجددا شروع می‌شود. پس برای جلوگیری از این ریسک، به روش‌هایی نیاز داریم تا بتوانیم آن را مدیریت کرده و مطئن شویم که نتیجه‌ی مدنظرمان را به دست می‌آوریم. (البته اگر احتمال رخ دادن سر ریز بود، بهتر است از این روش‌ها استفاده کنیم؛ در غیر اینصورت نیازی به حساسیت وجود ندارد).

کلمه کلیدی chceked

در صورتی که یک بخش از کد به صورت checked نوشته شود، CLR سرریز شدن کد را بررسی کرده و در صورت رخ دادن چنین چیزی، خطای OverflowException تولید می‌کند.

byte b = 255;
checked {
 
    b++;
}

خروجی :

Unhandled Exception: System.OverflowException: Arithmetic operation resulted in an overflow.

پس می‌توانیم با استفاده از try و catch، خطا را مدیریت کنیم.

کلمه کلیدی unchecked

و اگر بخواهیم بررسی سرریز صورت نگرفته و خطایی تولید نشود، از عملگر unchecked استفاده می‌کنیم:

byte b = 255;
unchecked {
 
    b++;
}

 

البته این عملگر بدون نوشتن آن نیز به صورت پیشفرض کار می‌کند؛ اما فرض کنید بخواهیم قسمتی از یک بخش checked را unchecked درنظر بگیریم! پس در این صورت از این روش استفاده می‌شود.

البته ممکن است که تنظیمات پیکربندی پروژه را تغییر دهیم و به صورت پیشفرض همه کدها checked باشند.

دو روش دیگر نوشتن و استفاده از عملگرهای بالا نیز به صورت زیر می‌باشد :

byte a = 255;
byte b = checked(a++);

یعنی اینکه به جای { } باز و بسته، از یک ( ) باز و بسته استفاده شود و خروجی کد نوشته شده در بین پرانتزها، به بیرون برگردانده شود.

 

 

 

 

 


برچسب ها
نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.