Checked and UnChecked Keyword in C#

ကျွန်တော် ဒီနေ့တော့ C# Program များ ရေးသားရာမှာ တွေ့ရတတ်တဲ့ Checked Keyword နဲ့ UnChecked Keyword အကြောင်းကို ဖော်ပြပေးမှာ ဖြစ်ပါတယ်။ ဒီနေရာမှာ ကျွန်တော် int ကို အဓိကထား ဖော်ပြပေးသွားမှာ ဖြစ်ပါတယ်။ int ဆိုတဲ့ Data Type တစ်ခုမှာ သူ လက်ခံနိုင်တဲ့ Range ရှိပါတယ်။

Data Type Min Value Mix Value
int -2147483648 2147483647

ဒီနေရာမှာ တစ်ခု ပြောလိုတာက int ရဲ့ သာမန်လက်ခံနိုင်တဲ့ Range အတွင်းမှာ ကိုယ်တွက်ချက်မယ့် Value တစ်ခု ကျော်သွားတာကို လက်ခံသင့် မခံသင့် ဆိုတဲ့ အချက်ပါ။

Console Application ကို အသုံးပြုပြီး ဒီ Program ကို စမ်းကြည့်ပါ။

Program.cs

using System;

using System.Collections.Generic;

using System.Linq;                                //using System.Linq ပါလာတာက VS 2008 သုံးထားလို့ပါ

using System.Text;

namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

int number = int.MaxValue;     // number ထဲမှာ အခု ရှိနေမှာက 2147483647 ပါ ။

number = number + 1;          // Max Range ကို ကျော်ပြီး Assign လုပ်လိုက်ပါတယ် ။

Console.WriteLine(number);

Console.Read();

}

}

}

ဒီ Program ကို Run ရင် ထွက်လာမယ့် Result က

အပေါင်း တန်ဖိုး တစ်ခု ထွက်ပေါ်လာခဲ့ခြင်း မရှိဘဲ အနှုတ် တန်ဖိုးသာ ထွက်ပေါ်လာပါတယ်။

ဒီလို ဖြစ်ရခြင်း အကြောင်းအရင်းက Compiler ဟာ UnChecked compilation ကို အလုပ်လုပ်သွားတဲ့ အတွက်ကြောင့် ပဲ ဖြစ်ပါတယ်။

ဒီလို လက်ခံရခက်ခဲတဲ့ အဖြေတစ်ခုအတွက် ကျွန်တော်တို့ အကြောင်းအရာမှန်တစ်ခုကို ရှာဖွေဖို့လိုလာပါတယ်။

ဒီလို စဉ်းစား ကြရအောင် …

  1. လက်ခံနိုင်တဲ့ Range ထက် ကျော်လွန်ခွင့် မပြုရန်
  2. ထိုသို့ ကျော်လွန်ပြီး Assign ပြုလုပ်မိပါက Exception ပြရန်
  3. ဘယ် Keyword ဟာ ထိုအချက်ကို စစ်နိုင်သည် ဆိုတာကို စဉ်းစားရန်

ကျွန်တော်တို့ ဒီ ၃ ချက်ကို စဉ်းစားပါမယ်။

ဒီလို စဉ်းစားပြီးခဲ့ရင်တော့ အခုလို Program ကို ပြင်ရေးပါမယ် ။

Programs.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

checked                                            // checked Keyword ကို အသုံးပြုထားပါတယ် ။

{

int number = int.MaxValue;

number = number + 1;

Console.WriteLine(number);

Console.Read();

}

}

}

}

ဒီတစ်ခါ မှာတော့ Program ဟာ Exception တက်နေခဲ့ပြီ ဖြစ်ပါတယ်။

ဒီနေရာမှာ တစ်ခုပြန်ပြောပေးချင်ပါတယ်။ သတိထားရမယ့် အချက်တစ်ခုက Error ဟာ Runtime မှာ တက်တာဖြစ်ပြီး Exception ကတော့ Compile Time မှာ တက်တာ ဖြစ်ပါတယ်။

ဒီလို စဉ်းစားပြီးခဲ့ရင်တော့ အခုလို Program ကို ပြင်ရေးပါမယ်။

Programs.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

unchecked                                          // unchecked Keyword ကို အသုံးပြုထားပါတယ် ။

{

int number = int.MaxValue;

number = number + 1;

Console.WriteLine(number);

Console.Read();

}

}

}

}

ဒီ Program ရဲ့ Output Result ကတော့ ဒီလို ဖြစ်ပါတယ်။

ကျွန်တော်တို့ အနေနဲ့ ဒီနည်းလမ်းကို သိခဲ့ရင် Data Type တစ်ခုရဲ့ Range ကို မှန်မှန်ကန်ကန် ထိန်းလို့ရမှာ ဖြစ်သလို Complier ရဲ့ Unckecked Compilation ကိုလည်း ကူညီ ဖြေရှင်းရာ ရောက်မှာ ဖြစ်တဲ့အတွက် ပြန်လည် မျှဝေလိုက်ပါတယ် ။

You can down below

Facebook comments:

One Response

  1. ကျွန်တော်..C# နဲ Window App တခုရေးပြီးလို..Setup file ထုပ်တယ်..
    အဲဒါကို Install လုပ်တဲ့အခါပေါလာတဲ့ Install Screen တွေကို …ကိုရဲ Install Screen တွေနဲ Change ချင်ပါတယ်….ဖြစ်နိုင်ရင်ကူညီပါခင်ဗျာ…

Leave a comment


*