فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش پیدا کردن محدوده Type های عددی و سرریز عدد در سی شارپ

حتماً تا حالا همیشه حفظ کردید محدوده یک تایپ مثل int رو در این آموزش میخوام بهتون بگم چطور میشه فهمید محدوده مقدار Value Type در زبان C#

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

برای یادگیری و آموزش سی شارپ ( آموزش زبان برنامه نویسی سی شارپ ) رایگان به این لینک بروید

int x=0;
int y=0;
x=int.MaxValue;
y=int.MinValue;

Console.WriteLine(x);
Console.WriteLine(y);


همانطور که ملاحظه میفرمایید در متغیر X بیشترین مقداری که در تایپ int جا میگیرد ذخیره میگردد و در y هم کمترین عددی که در این تایپ جا میشود ذخیره میگردد.چون تایپ int در سی شارپ 32 بیتی هست .پس عدد بزرگتری نسبت به int های زبان های نسل قدیم خود میتواند در ان قرار گیرد.با اجرای کد های بالا در متغیر x عدد 2147483647 و در متغیر y عدد -2147483648 قرار میگیرد.همانطور که برای تایپ int این کار عملی شد ، میتوان برای تایپ های دیگر نیز از این دستور استفاده نمود جهت به دست آوردن بازه اعداد


byte x,y;
x=byte.MaxValue;
y=byte.MinValue;

Console.WriteLine(x);
Console.WriteLine(y);

در کد های بالا در متغیر x عدد 255 و در متغیر y عدد 0 قرار میگیرد.



int x=256;
byte y=0;

if (x > byte.MaxValue || x < byte.MinValue)
    Console.WriteLine("Overflow!");
else
    y = (byte)x;

البته راه کد نویسی دیگه ای هم داره که پیشنهاد میشه از راه دستور Checked استفاده بشه.

int x=256;
byte y=0;            
            try
            {
                checked
                {
                    y=(byte)x;
                }
            }
            catch (OverflowException ex)
            {
                MessageBox.Show(ex.Message);
            }

 

البته دستور بالا رو میتونید بدون استفاده از try هم انجام بدید به شکل زیر اما اگه با try باشه کد شما شکیل تر خواهد بود

int x=256;
byte y=0;            
          
                checked
                {
                    y=(byte)x;
                }
            }
         

همانطور که میدونید int مثل یک پارچ میمونه و byte مثل یک لیوان دستور checked میاد چک میکنه اگه مقدار X رو بریزی تو y آیا داده شما کاملاً و بدون خطا وارد متغیر مقصد خواهد شد یا خیر


فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

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

نظرات