DEV Community

Cover image for C# သင်ခန်းစာ - ၈
khunsai thawzin
khunsai thawzin

Posted on

C# သင်ခန်းစာ - ၈

Namespace ဆိုတာကို အရိုးရှင်းဆုံး အဓိပ္ပာယ်ဖွင့်ရရင်တော့ ကုဒ်တွေကို စနစ်တကျ စုစည်းသိမ်းဆည်းထားတဲ့ "ကွန်တိန်နာ (Container)" သို့မဟုတ် "နာမည်ပေးစနစ်" တစ်ခု ဖြစ်ပါတယ်။
ပရိုဂရမ်တစ်ခုမှာ ကုဒ်တွေ အများကြီး ရေးလာတဲ့အခါ ဒါမှမဟုတ် တခြားသူတွေ ရေးထားတဲ့ Library တွေကို ယူသုံးတဲ့အခါ နာမည်တူတာမျိုးတွေ မဖြစ်အောင် Namespace က တားဆီးပေးပါတယ်။

အောက်ပါ အချက်အလက်တွေနဲ့ အကျယ်တဝင့် လေ့လာကြည့်ရအောင် -

၁။ ဘာကြောင့် Namespace ကို သုံးရတာလဲ? (The "Why")
ဖိုင်တွဲ (Folder) တွေနဲ့ ဥပမာပေးရင် ပိုနားလည်လွယ်ပါတယ်။

• ကွန်ပျူတာထဲမှာ Homework.docx ဆိုတဲ့ နာမည်တူ ဖိုင်နှစ်ခုကို Folder တစ်ခုတည်းမှာ သိမ်းလို့မရပါဘူး။

• ဒါပေမဲ့ English ဆိုတဲ့ Folder ထဲမှာ Homework.docx တစ်ခု၊ Math ဆိုတဲ့ Folder ထဲမှာ Homework.docx တစ်ခု ခွဲသိမ်းရင်တော့ ရပါတယ်။

ပရိုဂရမ်မင်းမှာလည်း အဲဒီ Folder လိုမျိုး အလုပ်လုပ်ပေးတာဟာ Namespace ဖြစ်ပါတယ်။ လူနှစ်ယောက်က Calculator ဆိုတဲ့ Class တစ်ခုစီ ရေးခဲ့ရင် Namespace ခွဲထားခြင်းအားဖြင့် နာမည်တူနေပေမဲ့ ကွန်ပျူတာက ခွဲခြားသိမြင်နိုင်ပါတယ်။

၂။ Namespace ကြေညာပုံ (Declaration)
C# မှာ Namespace တစ်ခုကို အောက်ပါအတိုင်း တည်ဆောက်ပါတယ်။

namespace MyProject.Models
{
    class Student
    {

    }
}

Enter fullscreen mode Exit fullscreen mode

၃။ Namespace ကို ပြန်လည်အသုံးပြုပုံ (Using Directive)
Namespace တစ်ခုထဲက Class တွေကို ယူသုံးချင်ရင် နည်းလမ်းနှစ်ခု ရှိပါတယ်။
က။ အပြည့်အစုံရေးခြင်း (Fully Qualified Name): MyProject.Models.Student s = new MyProject.Models.Student(); (ဒါက ရေးရတာ ရှည်လျားလွန်းပါတယ်။)
ခ။ using keyword ကို သုံးခြင်း: ပရိုဂရမ်ရဲ့ အပေါ်ဆုံးမှာ Namespace ကို ကြေညာလိုက်တာပါ။

using MyProject.Models;

Student s = new Student(); 

Enter fullscreen mode Exit fullscreen mode

၄။ Hierarchy (အဆင့်ဆင့် ဖွဲ့စည်းပုံ)
Namespace တွေထဲမှာ Namespace အသေးလေးတွေ ထပ်ထည့်လို့ရပါတယ်။ ဒါကို Nested Namespaces လို့ ခေါ်ပါတယ်။ ဥပမာ - System.Collections.Generic

• System က အကြီးဆုံး Namespace။
• Collections က System ထဲက Namespace အခွဲ။
• Generic က Collections ထဲက Namespace အခွဲ။

၅။ Common Namespaces (အသုံးများသော Namespace များ)

.NET မှာ အသင့်ပါပြီးသား Namespace အချို့ကတော့ -
• System: အခြေခံအကျဆုံးအရာတွေ ပါဝင်တယ် (ဥပမာ- Console)။
• System.IO: ဖိုင်အဝင်အထွက် ဖတ်တာ ရေးတာတွေအတွက်။
• System.Linq: ဒေတာတွေကို ရှာဖွေစစ်ထုတ်ဖို့အတွက်။
• System.Threading: ပရိုဂရမ်ကို အလုပ်တွေ အပြိုင်လုပ်ခိုင်းဖို့အတွက်။

(Key Takeaways)

  1. Organization: ကုဒ်တွေကို စနစ်တကျ အုပ်စုခွဲပေးတယ်။

  2. Naming Conflict: နာမည်တူနေတဲ့ Class တွေကြားမှာ ရောထွေးမှုမရှိအောင် လုပ်ပေးတယ်။

  3. Readability: ကုဒ်တွေကို ဖတ်ရတာ ပိုရှင်းလင်းစေတယ်။
    Namespace ဆိုတာ ကုဒ်တွေအတွက် "နေရပ်လိပ်စာ" ပေးလိုက်တာနဲ့ တူတူပါပဲ။

Top comments (0)