چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

عملگرهای checked و unchecked در زبان برنامه‌نویسی سی شارپ

کلمه کلیدی checked، یک کلمه رزرو شده در زبان برنامه‌نویسی سی‌شارپ می‌باشد، کامپایلر بدون اعلام خطا و بی اهمیتی به بعضی از استثناها با توجه به رفتار پایه که برای آن در نظر گرفته شده است بعضی از موارد استثناء صرف نظر می‌کند:

namespace CoreConsoleApp
{
    using System;

    static class Program
    {
        static void Main()
        {
            for (byte i = 0; i <= 255; i++)
            {
                Console.WriteLine(i);
            }
        }
    }
}

حلقه مثال بالا چند بار اجرا خواهد شد؟ نوع داده‌ای byte فقط می‌تواند مقادیری در محدوده‌ی 0 تا 255 را در خود نگهداری نماید در نتیجه بعد از اجرا حلقه، اگر مقدار متغیر i در آخرین حلقه به 255 برسد با افزایش ++i مقدار متغیر 256 نخواهد شد که پروسه اجرایی از حلقه خارج شود بلکه چون محدودیت بایت تا 255 می‌باشد با افزایش یک واحدی متغیر، سریز رخ داده و نتیجه صفر خواهد شد، همین مثال برای نوع‌های int, long و ... نیز صادق خواهد بود.

برای چگونگی مدیریت این وضعیت در زبان برنامه‌نویسی سی‌شارپ می‌توان از کلمات کلیدی checked و unchecked استفاده نمود. در صورتی بخشی از کد با کلمه کلیدی checked علامتگذاری شود ابزار CLR بررسی سرریز را اجرا خواهد کرد و با رخداد سرریز استثناء Overflow Exception صادر می‌شود.

برخلاف checked با بکارگیری کلمه کلیدی unchecked برای بخشی از کدها در صورت رخداد سرریز کامپایلر از استثنا صرف نظر خواهد کرد، اما با مشکل از دست رفتن داده‌ها مواجه خواهیم بود که در مثال قبل بعد از رسیدن حلقه به 255 با افزایش یک واحدی مقدار متغیر 0 خواهد شد.

namespace CoreConsoleApp
{
    using System;

    static class Program
    {
        static void Main()
        {
            int start = int.MaxValue;
            int end = int.MaxValue;
            checked
            {
                int result = start + end;
                Console.WriteLine(result);
            };
        }
    }
}

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.