MYSTERY ZILLION တွင် English သို့မဟုတ် Unicode ဖြင့်သာ အသုံးပြုခွင့်ရှိသည်။ ဇော်ဂျီ ၊ ဧရာ စသည်တို့ကို အသုံးပြုခွင့် မရှိ။ Unicode fonts များမှာ Mon3,Yunghkio, Myanamr3 စသည်များ အသုံးပြုနိုင်သည်။ Unicode Guide ကို ဒီမှာ Download ချပါ။ Zawgyi to Unicode Converter
Don't share ebook or software if nobody request. You can find free book websites on here. We are welcome for discussion or asking question instead.
basic basic basic of C#
MZ ထဲမှာ programming နဲ့ ပတ်သက်တဲ့ topic တွေက active သိပ်မဖြစ်ဘူးဖြစ်နေတယ်ဗျာ။ ဒါကြောင့် ကျွန်တော် C# programming နဲ့ပတ်သက်ပြီး နည်းနည်းလောက် ပြောကြည့်မယ်ဗျာ။ ဒီအချိန်မှာ C# လို့ ပြောလိုက်ရင် programming လုပ်နေတဲ့သူတွေ၊ programming ကိုစိတ်၀င်စားတဲ့ သူတွေ အားလုံးနီးနီး ကြားဖူး၊ သုံးဖူး၊ ဖတ်ဖူး၊ လေ့လာဖူး ကြမယ်လို့ ထင်ပါတယ်။ ကျွန်တော်အခု ဒီပိုစ့်ကို အခုမှ C# စတင်လေ့လာမယ် ညီငယ်၊ညီမငယ် ကျောင်းသား/သူ တွေ အတွက်ရည်ရွယ်ပြီးရေးပါမယ်။ ညီငယ်၊ ညီမငယ်တို့အတွက် C# programming လေ့လာတဲ့ ခရီးမှာ အနည်းငယ်မျှလောက်ပဲဖြစ်ဖြစ် အထောက်အကူရသွားစေချင်တဲ့ ရည်ရွယ်ချက်နဲ့ပါ။ လုံး၀ အခြေခံကနေပြီး ကျွန်တော် သိသလောက် ရေးမှာ ဖြစ်တဲ့ အတွက် မှားတွေတွေ့ရင်လည်း ထောက်ပြကူညီပါ၊ မရှင်းတာရှိရင်လည်း မေးပါ၊ လိုအပ်တာရှိရင်လည်း ကူညီလို့ ဖြည့်ပေးကြပါလို့ အရင်းဆုံး တောင်းပန်ပါတယ်။
ကျွန်တော်ဟာ professional developer တစ်ယောက် မဟုတ်သေးပါဘူး။ C# အကြောင်းကို နည်းနည်းပါးပါး နားလည်၊ လုပ်ဖူးတဲ့ သူတစ်ယောက်သာဖြစ်တဲ့ အတွက်၊ မှားခဲ့တာရှိရင် ကျေးဇူးပြုပြီး ပြောပေးပြင်ပေးကြပါလို့လည်း တောင်းပန်ပါတယ်။ကျွန်တော် အချိန်ရရင် ရသလောက် ပုံမှန်လေးရေးပေးပါ့မယ်။ ဒါကြောင့်မို့ ပိုစ့်တွေတင်တာကြာခဲ့ရင်၊ မေးခွန်းများကို replyကြာခဲ့ရင်၊ နားလည်ပြီး ခွင့်လွှတ်ပေးပါ(မေးခဲ့တာကို ရရင်ရတယ် မရရင်မရဘူး သေချာပေါက် ပြန်ဖြေပါ့မယ်) အားလုံးပဲ ကူညီပေးကြမယ်လို့ မျှော်လင့်ပါတယ်။ ကျေးဇူးတင်ပါတယ်။
** ဒီ topic ကို ကျွန်တော် MMSO ( http://www.mmso.org ) မှာလည်း တင်လက်စပါ **
ကျွန်တော်ဟာ professional developer တစ်ယောက် မဟုတ်သေးပါဘူး။ C# အကြောင်းကို နည်းနည်းပါးပါး နားလည်၊ လုပ်ဖူးတဲ့ သူတစ်ယောက်သာဖြစ်တဲ့ အတွက်၊ မှားခဲ့တာရှိရင် ကျေးဇူးပြုပြီး ပြောပေးပြင်ပေးကြပါလို့လည်း တောင်းပန်ပါတယ်။ကျွန်တော် အချိန်ရရင် ရသလောက် ပုံမှန်လေးရေးပေးပါ့မယ်။ ဒါကြောင့်မို့ ပိုစ့်တွေတင်တာကြာခဲ့ရင်၊ မေးခွန်းများကို replyကြာခဲ့ရင်၊ နားလည်ပြီး ခွင့်လွှတ်ပေးပါ(မေးခဲ့တာကို ရရင်ရတယ် မရရင်မရဘူး သေချာပေါက် ပြန်ဖြေပါ့မယ်) အားလုံးပဲ ကူညီပေးကြမယ်လို့ မျှော်လင့်ပါတယ်။ ကျေးဇူးတင်ပါတယ်။
** ဒီ topic ကို ကျွန်တော် MMSO ( http://www.mmso.org ) မှာလည်း တင်လက်စပါ **
မှတ်ချက်များ
အရင်ဆုံး C# ဆိုတာ ဘယ်လိုဖြစ်ပေါ်လာလဲ စပြောရအောင်။ ကျွန်တော်သိတာကို ပြောမှာနော်။ အားလုံးမှန်ချင်မှလည်း မှန်လိမ့်မယ်။
ကဲ… စပြီ….။
C# ဆိုတာ Microsoft က ထုတ်လိုက်တဲ့ programming language တစ်ခုပေါ့။ C# ဖြစ်ပေါ်လာရတဲ့ history ကို အရင် ပြောကြည့်မယ်ဗျာ။ programming language တွေ အများကြီး ရှိတဲ့ အထဲမှာ တော်တော်များများ စလုပ်ဖူးတာက C , C++ ထင်ပါတယ်။ C နဲ့ ရေးရင် ကျွန်တော်တို့ Graphic User Interface တွေ ရေးရတာ အဆင်မပြေဘူးဗျ။ နည်းနည်းပင်ပန်းတယ်။ ဒါနဲ့ ပိုလွယ်တဲ့ language တွေ ရှာလာတဲ့ အခါ Microsoft ကထုတ်တဲ့ Visual Basic(VB) ကိုသုံးဖြစ်လာကြတယ်။ VBက microsoft က ထုတ်တဲ့ Visual Studio လို့ခေါ်တဲ့ programming language အစုအေ၀းကြီးထဲက Language တစ်ခုပေါ့ဗျာ။ အဲ့ဒီ Visual Studio ထဲမှာ VB, VC++, Visual Foxpro, စသည်ဖြင့်ဗျာ ရွေးချယ်လို့ ရတဲ့ language တွေပါပါတယ်။ VB ရဲ့ အားသာချက်က Design အပိုင်းမှာ တော်တော်လေးကို လွယ်တာပါပဲ။ ဒါပေမယ့် အားနည်းချက်ကတော့ Object-Oriented Technology ကို သုံးလို့ မရဘူး။ OOP မဟုတ်ဘူးပေါ့ဗျာ။ ဒီတော့ တကယ့် Enterprise Application ကြီးတွေ ရေးလို့ အဆင်မပြေဘူးလို့ ပြောကြတယ်။ VC++ နဲ့ ရေးဖို့ကလည်း တော်တော်လေးကို ခက်တယ်လို့ ပြောကြတယ်ဗျ။ (ကျွန်တော်တော့ မရေးဖူးပါ)။ ဒါကြောင့် နောက်ပိုင်းမှာ programmer တွေက Java လိုင်းကို ပြောင်းကြတယ်။ ဒီတော့ Microsoft က java ကို fightဖို့ အကြံထုတ်ရပြီပေါ့။ တခြားprogramming language တွေရဲ့ အားသာချက်တွေကို ၅နှစ်လောက်လေ့လာပြီးမှ ၂၀၀၁၊၂၀၀၂ မှာ Visual Studio .NET ဆိုတာကြီးကို ထုတ်လိုက်တယ်ဗျ။ အဲ့ဒီ Visual Studio .NET ထဲမှာ နဂို VS တွေထဲက ပါနေကြဖြစ်တဲ့ VB, VC++ စတာတွေ အပြင် Visual J# ဆိုတာနဲ့ Visual C# ဆိုတဲ့ language အသစ် ၂ ခုကို မိတ်ဆက်ပေးလိုက်တယ်ဗျ။ java သမားတွေအတွက် J# နဲ့ C သမားတွေ အတွက် C# ဆိုပါတော့ဗျာ။ အဲ့ဒီ language ၂ ခုမှာ C# ကတော့ တော်တော်လေးကို အောင်မြင်သွားတယ်။(ပေါက်သွားတယ်ပေါ့ဗျာ)။ Microsoft ကလည်း C#ကို တော်တော်ညွှန်းတယ်ဗျ။ တခြားlanguage တွေ အားလုံးရဲ့ အားသာချက်တွေကို ယူထားတဲ့ language ဆိုပဲဗျ။ VB လိုမျိုး design ကို အလွယ်တကူရေးနိုင်တယ်။ Java လိုမျိုး OO ရဲ့ feature တွေကို သုံးနိုင်တယ်။(java ထက်တောင်မှ OO ပိုစစ်သေးတယ်ဆိုပဲဗျ)(ဥပမာဗျာ java မှာဆိုရင် data type တွေက keyword အဆင်မှာပဲ ရှိတယ်၊ C# မှာတော့ datatype တွေကိုယ်တိုင်က classတွေ အဖြစ်ရှိတယ်ဗျာ၊ class မဟုတ်တာဆိုလို့ operator တွေပဲ ကျန်တော့တယ်တဲ့)။
ကဲ ဒါကတော့ C# language မွေးဖွားလာပုံပေါ့ဗျာ။
.NET Framework
C# language စပြီးပါလာတဲ့ Visual Studio .NET 2002 မှာပဲ Microsoft က .NET Framework ဆိုတာကြီးကိုပါ မိတ်ဆက်ပေးခဲ့တယ်ဗျ။ အဲ့ဒီ .NET Frameworkကြီးထဲမှာ အဓိကကတော့ အပိုင်း ၂ပိုင်းပါတယ်ဗျ။ Common Language Runtime (CLR) နဲ့ Framework Class Library(FCL) ဆိုပြီးတော့။
CLR က ကျွန်တော်တို့ .NET Platform မှာ ရေးတဲ့ ဘယ်language codeကိုမဆို Microsoft Intermediate Language အဖြစ်ပြောင်းပေးပြီး Run လို့ ရအောင်လုပ်ပေးတယ်ပေါ့ဗျာ။ FCL ကတော့ predefined class library အစုအေ၀းကြီးလို့ပဲ နားလည်ထားတယ်ဗျ။ .NET Framework အလုပ်လုပ်ပုံ လေးကြည့်ကြည့်ရအောင်ဗျာ။
အရင်ဆုံးကျွန်တော်တို့ Programတစ်ခုရေးလိုက်တယ်ဗျာ။ အဲ့ဒါကို source code လို့ ခေါ်တယ်။ source code ကို ကျွန်တော်တို့ ကွန်ပျူတာကြီးက နားမလည်ပါဘူး။ ဒီတော့ ကွန်ပျူတာနားလည်မယ့် machine code အဖြစ်ကို ပြောင်းဖို့လိုပါတယ်။ ဒီအလုပ်ကို .NET Framework အတွင်းမှာ ရှိတဲ့ သက်ဆိုင်ရာ Language အလိုက် compiler တွေက ဘာသာပြန်အလုပ်လုပ်ပါတယ်။ ဒီနေရာမှာ သိထားရမှာက .NET Framework ကိုသုံးပြီးရေးထားတဲ့ code တွေကို compile လုပ်ရင် machine code တန်းမထွက်ပါဘူး။ .NET Framework ကပဲနားလည်နိုင်တဲ့ MSIL လို့ခေါ်တဲ့ Microsoft Intermediate Language Code အဖြစ်ပဲထွက်ပါတယ်။ အဲ့ဒီ code ကိုမှတဖန် CLR ထဲမှာ ရှိတဲ့ Jet In-time Compilier (JIT) လေးက ထပ်ပြီး Compile လုပ်ပါတယ်။ ဒီလိုလုပ်လိုက်မှ Operating System ကနားလည်တဲ့ code အဖြစ်ကိုရောက်ရှိပါတယ်။ ဆိုလိုတာကတော့ဗျာ .NET Framework မရှိရင် .NET program တွေ run လိုတောင်မရဘူးပေါ့။ နောက်ပိုင်း Microsoft က ထုတ်တဲ့ OS တွေမှာ .NET Framework ကို build-in ထည့်ပေးပါတယ်။ ဒါမှမဟုတ်လည်း internet ကနေ framework ကို အလကားပေးပါတယ်။ Visual Studio .NET ကြီးတစ်ခုလုံး ၀ယ်မယ်ဆိုရင်တော့ စျေးတော်တော်ကြီးတယ်ကြားတယ်ဗျ။ (ကျွန်တော်တို့ မြန်မာနိုင်ငံမှာတော့ ပေါပါတယ် :-)) FCL အကြောင်းတောင် မေ့တော့မလို့။ ဒီလိုဗျ Framework Class Library ဆိုတာ ကျွန်တော်တို့ program ထဲမှာ user monitor ပေါ် 'hello' ဆိုပြီး ရိုက်ထုတ်ပြချင်တယ်ဆိုပါတော့။ အဲ့ဒါကို C နဲ့ ရေးရင် ဆိုပြီး ရိုက်တယ်ဗျာ။ အဲ့ဒီကုဒ်ထဲမှာ ရေးလိုက်တဲ့ printf ဆိုတဲ့ဟာလေးကို function လို့ခေါ်တယ်ဗျ။ အဲ့ဒီ function က ကျွန်တော်တို့ကိုယ်တိုင်ရေးတာမဟုတ်ဘူးဗျာ၊ library ထဲကနေခေါ်သုံးတာပေါ့။ အဲ့ဒီလို predefined function တွေရေးပြီး သိမ်းထားတဲ့ class အစုအေ၀းကြီးကို Framework Class Library လို့ ခေါ်ကြောင်းပါဗျား။
ကဲ ဒီဇယားလေးကတော့ .NET Framework version history ပါဗျာ။
window key + R နှိပ်ပြီး Run Box ကိုခေါ်လိုက်ဗျာ ပြီးရင် အဲ့ဒီ Box ထဲမှာ notepad လို့သာရိုက်ထည့်လိုက်၊ ဒါဆို Notepad ပွင့်လာလိမ့်မယ်။ ဟုတ်ပြီ… program စရေးရအောင်။ ဒီအတိုင်းရေးလိုက်ဗျာ ပြီးမှ ပြန်ရှင်းမယ်။ ရေးပြီးပြီနော်… အိုကေ ပြန်ရှင်းရအောင်။ C တို့ java တို့လိုပဲ C# program တွေကလည်း Main function ကနေစပြီး အလုပ်လုပ်တယ်ဗျ။ ဒါပေမယ့် C# မှာတော့ Main ကို M အကြီးနဲ့ ရေးရတယ်နော်။ ပြီးတော့ static ဆိုတဲ့ keyword လည်းထည့်ရတယ်။ အိုကေ ကျွန်တော်တို့ ဒီအတိုင်းရေးလိုက်ပြီ static void Main() ပေါ့။
အဲ့ဒီ Main function ရဲ့ scope ကိုသက်မှတ်ဖို့ { နဲ့ } ကို သုံးတယ်။ ဒါလည်း C တို့ java တို့နဲ့ တူတူပဲ။ အဲ့ဒီ scope ထဲမှာမှ ကျွန်တော်တို့ computer ကို ခိုင်းစေချင်တဲ့ statement တွေကို ရေးရမယ်။ statement တစ်ကြောင်း ပြီးပြီဆိုတိုင်းမှာ semicomar(;) ပိတ်ဖို့လည်း မမေ့နဲ့ဦးနော်။
monitor မှာ စာရိုက်ခိုုင်းဖို့ အတွက် C# မှာ Write or WriteLine function ကို သုံးရတယ်ဗျ။ အဲ့ဒီ Write function ကိုလည်း ဒီတိုင်းခေါ်ခွင့်မရှိဘူးဗျ၊ function ရှိနေတဲ့ class name နဲ့ တဆင့်ခေါ်ရတယ်။ Write function က Console class ထဲမှာ ရှိတယ်လေ၊ ဒါကြောင့် ရေးတဲ့အခါ Console.Write လို့ရေးမှမှန်မယ်။ ဟုတ်ပြီ ဒါဆို ရှေမှာ ဘာလို့ System ဆိုတာကြီးပါရတာလဲ။ ဒါက ဒီလိုရှိတယ်ဗျ အဲ့ဒီ System ဆိုတာကို Namespace လို့ ခေါ်တယ်။ Namespace ဆိုတာ class တွေ စုထားတဲ့ class အစုအေ၀းကြီး class library ပေါ့ဗျာ။ Console class က System namespace ထဲမှာ ရှိတယ်။ ဒါကြောင့် ကျွန်တော်တို့က System.Console.Write လို့ ရေးရတာဗျ။ ဒီလိုမျိုး class name ရဲ့ ရှေ့မှာ ထည့်မရေးချင်ဘူး ဆိုလည်း နောက်တစ်နည်းရှိသေးတယ်။ class မဆောက်ခင်မှာ library file အနေနဲ့ ကြိုပြီး ကြေငြာပေးထားလို့ ရတယ်။ C မှာ #include၊ java မှာ import ဆိုပြီး ကြေငြာသလို C# မှာလည်း using ဆိုပြီး ကြေငြာရတယ်။ ဒီလိုမျိုးဗျာ… ခုလို့ class အပေါ်မှာ System namespace ကို using လုပ်လိုက်ရင်။ ဒီ class အတွင်းမှာ အဲ့ဒီ System namespace ထဲက class တွေကို စိတ်ကြိုက်ခေါ်သုံးလို့ ရပြီ။ နောက်ထပ်ထပ်ရေးနေစရာ မလိုတော့ဘူး။ မဟုတ်ရင် Console.Write တစ်ခါရိုက်ချင်တိုင်း ရှေ့မှာ System ဆိုတာကြီးကို ပြန်ပြန်ထည့်ပေးနေရလိမ့်မယ်။
ကဲ Main function ရေးပြီတော့ ပြီးရောလားဆိုတော့ မပြီးသေးဘူးဗျ။ C# က OOP language လေ။ ဒီတော့ ဒီfunction ကိုလည်း class တစ်ခုခုအထဲမှာပဲ ထည့်ရေးခွင့်ရှိတယ်ဗျ။ function ကြီးပဲ ဒီတိုင်းရေးလို့ မရဘူး။ ဒါကြောင့် ကျွန်တော်က Hello ဆိုတဲ့ class ထဲမှာ ထည့်ရေးလိုက်တာ။ class name က ကိုယ်ကြိုက်တာပေးခွင့်ရှိပါတယ်။ java မှာလိုမျိုး file name နဲ့ class name နဲ့ တူစရာ မလိုဘူး။
ဒီလောက်ဆိုရင် အပေါ်က program ထဲမှာ ရေးထားတဲ့ coding တွေကို နားလည်ပြီထင်တယ်နော်။ အဓိကနားလည်စေချင်တာကတော့ ဘာလုပ်ချင်လို့ ဘယ်ကုဒ်ကိုရေးရတယ် ဆိုတာကို နားလည်စေချင်တာ။ ကဲ ကျွန်တော်တို့ ရေးလို့ ပြီးပြီဆိုတော့ ဒီ source code တွေကို သိမ်းရမယ်။ Ctrl + S နှိပ်ပြီး C: Drive အောက်မှာ ခင်ဗျားတို့ ကြိုက်တဲ့ နာမည်နဲ့ သိမ်းဗျာ၊ အဲ file extension ကတော့ (.cs) ဖြစ်ရမယ်နော်။ ဥပမာ ကျွန်တော်က filename ကို Test1 လို့ ပေးချင်တယ်ဆိုရင် Test1.cs ဆိုပြီးပေးရမယ်။ ရတယ်နော်… အိုကေ အခုကျွန်တော်တို့ ဒီ C# source file လေးကို compile လုပ်ပြီး run ကြည့်ရအောင်။ compile လုပ်ဖို့ အတွက် command prompt ထဲသွားဖို့လိုတယ်။ ကဲ့ Run Box ကိုခေါ်ပြီး cmd လို့ ရိုက်လိုက်ဗျာ ဒါဆို command prompt ပေါ်လာမယ်။ command prompt ထဲမှာ လက်ရှိ cursor location က C: အောက်က document and setting အောက်က login ၀င်ထားတဲ့ username အောက်ကို ရောက်နေလိမ့်မယ်ထင်တယ်။ ဒါဆိုအဆင်မပြေဘူး ကျွန်တော်တို့ Root Directory အောက်ကို ပြန်သွားရအောင်။ CD\ ရိုက်ပြီး Enter ခေါက်လိုက်။ ဒါဆို C: အောက်ကို ပြန်ရောက်သွားပြီ။ အဲ့ဒီမှာမှ ကျွန်တော်က .NET Framework သွင်းထားတဲ့ location ကို ရှာရအောင်။ ဒီနေရာမှာ ကျွန်တော် တစ်ခုပြောဖို့ကျန်သွားတယ်။ အပေါ်ပိုစ့်မှာ ပြောခဲ့တဲ့ အတိုင်း ကျွန်တော်တို့ ရေးထားတဲ့ source file တွေကို သက်ဆိုင်ရာ language ရဲ့ compilier နဲ့ compile လုပ်ရတယ်။ C# အတွက်တော့ C Sharp Compiler (csc.exe) ပေါ့ဗျာ။ ဒါကြောင့် csc.exe file လေးကို ရှာမယ်ဗျာ။ ကဲ command prompt ထဲမှာ ဒီလိုလေးရိုက်လိုက်ပါဦး။ ခဏတော့ စောင့်ရမယ့်ထင်တယ်။ ရှာလိုတွေ့ပြီဆိုရင် အဲ့ဒီ compiler လေးရှိတဲ့ နေရာကို path ပေးရမယ်ဗျ။ ခက်တာက ကျွန်တော်က path ပေးတာကို မေ့နေပြီ။ ဒါကြောင့် အဲ့ဒီ compiler ရှိတဲ့ location ကိုပဲ CD command သုံးပြီး သွားလိုက်မယ်ဗျာ။ သြော်ဒါနဲ့ ခင်ဗျားစက်မှာ framework version အများကြီးရှိနေတာလဲ ဖြစ်နိုင်တယ်နော်။ ကြိုက်တဲ့ version အောက်ကို ၀င်လိုက်ဗျာ။ ကဲ compile လုပ်ရအောင်။ ခုလို compile လုပ်လိုက်တော့ compiler က exe file ထုတ်ပေးတယ်ဗျ။ ရှာရင် ရှာကြည့်လိုက်ဦး။ တွေ့တယ်မလားဗျ ကျွန်တော်တို့ program ရဲ့ executable file လေး။ အဲ့ဒီ file လေးကို run ရင် ရပြီပေါ့။ တခုတော့ မှတ်ထားဦးနော်၊ ဒီ exe file က .NET Framework ရှိမှ run လို့ ရမှာနော်။ အခု တခါတည်း run ကြည့်ရအောင်ဗျာ။ exe file ဆိုတော့ ဒီတိုင်း filename ရိုက်လိုက်ရုံပါပဲ။ or ကဲ့ ဒါဆိုရင် ခင်ဗျားတို့ရဲ့ ပထမဆုံး C# program ရဲ့ output ကို တွေ့ရပြီပေါ့။
***********
ကျွန်တော် video training လေးပါ တင်ပေးလိုက်တယ်။ ဒီမှာ ယူဗျာ။ Compile လုပ်ရင် program မှာမှားနိုင်တာလေးတွေလည်း ရှိတယ်ဗျ။
၁ - using, class, static, void အဲ့ဒါတွေကို စာလုံး အသေးနဲ့ရေးရမယ်။
၂ - System, Console, Write, Main အဲ့ဒါတွေကိုတော့ အစစာလုံးကို အကြီးနဲ့ ရေးရမယ်။
၃ - write function အဆုံးမှာ ( ; ) ထည့်ရမယ်။
၄ - Hello World ဆိုတဲ့ စာသားကို " နဲ့ " ထဲထည့်ရေးရမယ်။
ဒီလောက်ဆို အားလုံး run လို့ ရကြမှာပါ။ စမ်းကြည့်ပြီး တစ်ခုခုပြန်ပြောကြဗျာ။
C# မှာ အဓိက data type ၂ မျိုးရှိတယ်ဗျ။ Value Type နဲ့ Reference Type ဆိုပြီးခေါ်တယ်ဗျာ။ Value Type ဆိုတာကတော့ memory ပေါ်က ကျွန်တော်တို့ ကြေငြာထားတဲ့ နေရာမှာ value ကိုတိုက်ရိုက်သိမ်းထားတာဗျာ။ Reference Type ဆိုရင်တော့ value ကို မသိမ်းထားပဲ အဲ့ဒီ value ရှိနေတဲ့ memory address ကိုပဲ ကျွန်တော်တို့ရဲ့ variable ထဲမှာ သိမ်းထားတာကို ဆိုလိုတာပေါ့။
နမူနာက ဒီလိုဗျာ… number value data တခုသိမ်းဖို့အတွက် num ဆိုတဲ့ variable တစ်ခုကို memory ပေါ်မှာ နေရာယူလိုက်ပါတယ်။ ပြီး တခါတည်း အဲ့ဒီ နေရာမှာ 3 ဆိုတဲ့ value တစ်ခုကို သိမ်းလိုက်ပါတယ်။ ကြေငြာထားတဲ့ နေရာထဲမှာ value သိမ်းသွားတဲ့ အတွက် int ဟာ value type ဖြစ်ပါတယ်။ ဒီလိုပါပဲ abc ဆိုတဲ့ စာသားကို သိမ်းဖို့အတွက် st ဆိုတဲ့ variable ကို ကြေငြာလိုက်ပါတယ်။ ဒါပေမယ့် st ထဲကိုထည့်လိုက်တဲ့ value ဖြစ်တဲ့ abc ဟာ st ထဲမှာ မရှိပါဘူး။ memory ရဲ့ တခြားတနေရာမှာ ရှိသွားပါတယ်။ အဲ့ဒီ abc ရောက်သွားတဲ့ နေရာရဲ့ address ကသာလျှင် st ထဲကိုရောက်သွားပါတယ်။ ဒါကြောင့် string ဟာဆိုရင်ဖြင့် reference type ထဲမှာ ပါ၀င်ပါတယ်။
ဒါဆိုရင် value type နဲ့ reference type ကို ခွဲပြီး နားလည်မယ်ထင်ပါတယ်။ ဟုတ်ပြီ ဒါဆိုရင် value type မှာ ဘာတွေပါလဲ ဆက်ကြည့်ရအောင်။
value type ထဲမှာ integral type တွေ၊ floating point typeတွေ၊ decimal type၊ boolean data type၊ enumeration data type နဲ့ structure data type တွေပါ၀င်ပါတယ်။
reference type ထဲမှာတော့ string type၊ object type၊ array data type၊ class data type၊ interface နဲ့ delegate type တွေပါ၀င်ပါတယ်။
variable declaration အပိုင်းမှာ ကျွန်တော်တို့ သိဖို့လိုတာတခုရှိတယ်ဗျ။ ကျွန်တော်တို့ variable name တွေကြေငြာတဲ့နေရာမှာ C# keywords တွေနဲ့ သွားပြီးတူလို့မရဘူးဗျ။ Keywords ဆိုတာကတော့ဗျာ compiler က နားလည်ပြီးသား စကားလုံးတွေပေါ့။ သူတို့ကို reserved words လို့လဲခေါ်သေးတယ်ဗျ။ ဒီဇယားထဲက keyword တော်တော်များများကို ကျွန်တော်တို့ သိပြီးသားဖြစ်မှာပါ။ ဒါနဲ့ ခင်ဗျားတို့ စက်မှာ Visual Studio 2008 ဖြစ်ဖြစ်တင်ထားဦးဗျာ။ နောက်program တွေကို VS နဲ့ run ရအောင်။
ကျွန်တော်တို့ C# ထဲမှာ 3 လို့ ရိုက်လိုက်ရင် အဲ့ဒီ 3 ရဲ့ datatype က default အနေနဲ့ integer type ဗျ။ ကျွန်တော်က long အဖြစ်ရေးချင်တယ်ဆိုရင် 3L လို့ ရေးရမယ်။ ကျန်တာတွေကို အောက်မှာကြည့်လိုက်ပါဦး။ အပေါ်မှာ ပြထားတာကိုကြည့်မယ်ဆိုရင် တကယ့် value က 3 ဖြစ်ပေမယ့် သူ့ကို data type အမျိုးမျိုးမှာ ရေးတဲ့ပုံစံလေးပါ။
အဲ့ဒီထဲမှာ string type ကလွဲပြီး ကျန်တဲ့ type တွေက numeric type တွေပါ။ ဆိုလိုတာက သူတို့ကို ပေါင်းနှုတ်မြှောက်စား လုပ်လို့ရတယ်။ string type ကိုတော့ မရဘူး။ ဥပမာ ဆိုရင် output က ဆိုပြီး ပြနေလိမ့်မယ်ဗျာ။ ဆိုလိုတာကတော့ဗျာ 3 နဲ့ 4 ကို number အနေနဲ့ မပေါင်းပဲ string အနေနဲ့ ပေါင်းသွားတာပေါ့ဗျာ။ ဒီတော့ ကျွန်တော်တို့က string type အနေနဲ့ ရှိနေတဲ့ value တွေကို ပေါင်းချင်တဲ့ အခါမှာ numeric type အဖြစ်ကို ပြောင်းဖို့လိုလာပြီပေါ့။ ဒီလိုမျိုး datatype တစ်ခုကနေ တစ်ခုကို ပြောင်းဖို့အတွက်ဆိုရင် Data Type Conversation အကြောင်းကို သိဖို့လိုလာပါပြီ။ အဲ့ဒီလို ပြောင်းတဲ့ နေရာမှာ numeric type အချင်းချင်း ပြောင်းတာနဲ့ numeric type နဲ့ string type ပြောင်းတာ ဆိုပြီး ခွဲပြောပါမယ်။
numeric type အချင်းချင်းပြောင်းမယ်ဆိုရင် type conversation မှာ ၂ မျိုးရှိပါတယ်။ အလွယ်မှတ်မယ်ဆိုရင်တော့ ငယ်တဲ့ type ကနေ ကြီးတဲ့ type ကို ပြောင်းတာ (Widening) နဲ့ ကြီးတဲ့ type ကနေ ငယ်တဲ့ type ကို ပြောင်းတာ (Narrowing) ဆိုပြီး ရှိတယ်ဗျ။ ဥပမာ int data type ကနေ long ကို ပြောင်းချင်ရင် widening , long ကနေ int ကို ပြောင်းချင်ရင်တော့ narrowing ပေါ့။ object data type ကနေ numeric type ကိုပြောင်းမယ်ဆိုရင်.... string type ကနေပြောင်းချင်တယ်ဆိုရင်တော့ အဲ့ဒီလို type casts လုပ်လို့ မရတော့ပါဘူး။ ဒါဆိုရင် ဘယ်လိုပြောင်းမလဲ? Convert Function တွေကိုသုံးပြီးတော့ ပြောင်းရပါမယ်။ FCL ထဲက Convert class ထဲမှာ data type တစ်ခုကနေ တစ်ခုကို ပြောင်းဖို့ function တွေရှိပါတယ်။ သက်ဆိုင်ရာ Data type class တွေထဲမှာလဲ ရှိပါတယ်။ အဲ့ဒီ function တွေနဲ့ ပြောင်းရပါမယ်။ အောက်မှာ နမူနာကြည့်ပါ။ ကဲ နားကြဦးစို့....
ညီငယ်၊ ညီမငယ်တို့လည်း ကျွန်တော် ပြောခဲ့တာတွေကို တကယ်လိုက်ပြီး စမ်းကြည့် run ကြည့်ကြပါ။ ပြီးရင် သိချင်တာတွေ၊ နားမလည်တာတွေကို ပြန်ပြီးမေးကြပါ။ ကျွန်တော် အတက်နိုင်ဆုံး မြန်မြန်လေး reply ပြန်ပေးပါ့မယ်။
အားလုံးကိုကျေးဇူးတင်ပါတယ်။
sevenlamp
[FONT="]အရင်ဆုံး C# မှာ Main function ကနေ စရေးရမယ်ဆိုတော့…
[/FONT] [FONT="]
[/FONT] [FONT="]ဆိုပြီး ရေးလိုက်မယ်ဗျာ။ ပြီးရင် user ဆီကနေ တောင်းမယ့် number ကို memory ပေါ်မှာ ခဏသိမ်းထားဖို့ အတွက် နေရာယူ(variable declare) ရမယ်။ ဒါကြောင့် Main function ရဲ့ အတွင်းထဲမှာ….[/FONT]
[FONT="] [/FONT]
[FONT="]ဟုတ်ပြီး ဒါဆိုရင် integer တန်ဖိုးတွေ သိမ်းဖို့အတွက် နေရာလေးရပြီး။ အခု user ကို တန်ဖိုးတစ်ခုထည့်ပေးပါလို့ ပြောချင်တယ်။ user ကို ပြောတယ်ဆိုတာက monitor မှာ output ထုတ်ပြတာပဲလေ။ ဒါကြောင့် ဒီလိုလေးပြောလိုက်မယ်….[/FONT]
[FONT="]ဒါဆိုရင် user က number တစ်ခုရိုက်ထည့်တေ့မယ်။ အဲ့ဒီ number ကို လက်ခံဖို့ အတွက် C# console application မှာ ReadLine() function ကိုသုံးရမယ်။ အဲ့ဒီ function ကလည်း Console class ထဲမှာရှိတယ်။ ဒါပေမယ့် အဲ့ဒီ ReadLine function က user ဘာရိုက်ထည့်ထည့် string data type ပဲ return ပြန်တယ်။ ဒီတော့ user က 3 ရိုက်ထည့်ရင် “3” ဆိုပြီး string type ဖြစ်သွားမယ်။ ဒါဆိုရင် ကျွန်တော်တို့ memory ပေါ်မှာကြေငြာထားတဲ့ integer variable ထဲကို ဒီတိုင်းတန်းပြီး ထည့်လို့မရတော့ဘူး။ string type ကနေ integer type ကို convert လုပ်ပေးရတော့မယ်….[/FONT]
[FONT="]ဒီလိုရေးလည်း ရပါတယ်။[/FONT]
[FONT="]ကဲ… ကျွန်တော်တို့ရဲ့ num variable ထဲမှာ user ထည့်လိုက်တဲ့ တန်ဖိုးလေး ရောက်သွားပါပြီ။ အခု user ကို square result ထုတ်ပြဖို့ပဲကျန်ပါတော့တယ်…[/FONT]
[FONT="]Result ထုတ်ပြလိုက်တဲ့ code လေးကို နည်းနည်းလေး ရှင်းပြပါမယ်။ Write or WriteLine function အတွင်းမှာ parameter ၃ ခု ကျွန်တော်ပေးလိုက်ပါတယ်။ ပထမဆုံးတစ်ခု “Square of {0} is {1}” ဆိုတာမှာ {} အတွင်းထဲမှာ ရေးတဲ့ ဟာ၂ခုကလွဲပြီး ကျန်တာတွေအားလုံးက ဒီအတိုင်းပေါ်ပါမယ်။ အဲ့ဒါကို format string လို့ ခေါ်ပါတယ်။ နောက်က Parameter ၂ ခုကတော့ format string ထဲမှာ ထည့်ပေးလိုက်ချင်တဲ့ value တွေပါ။ num က index 0 ၊ num*num က index 1 နေရာမှာ ရှိပါတယ်။ အဲ့ဒီ value တွေကို format string ထဲမှာ ပြန်ခေါ်ဖို့ အတွက် {} ကိုသုံးပါတယ်။ index 0 နေရာက value ကို ခေါ်ချင်ရင် {0} လို့ခေါ်ရပါမယ်။ ဒီအတိုင်းပဲ index 1 နေရာက ဟာကိုခေါ်ဖို့အတွက်တော့ {1} ပေါ့။ ဒါဆိုရင် နားလည်မယ်ထင်တယ်နော်။ အဲ့ဒီလို မရေးပဲ နောက်တစ်မျိုးလည်း ရေးလို့ရပါသေးတယ်…[/FONT]
[FONT="]အခု နောက်ဆုံးအနေနဲ့ user ကို program ပိတ်ဖို့အတွက် ဒီလိုလေး ရေးပေးလိုက်ပါမယ်…[/FONT]
[FONT="]\n ကို နောက်တစ်လိုင်းဆင်းဖို့ အတွက်သုံးပြီး။ Console.Read() ကတော့ user enter ခေါက်တာကို စောင့်နေပေးပါတယ်။[/FONT]
[FONT="]ဒီ ပုစ္ဆာလေးထဲမှာ ကျွန်တော် Convert class နဲ့ Console class ၂ ခုကို သုံးထားပါတယ်။ ဒါကြောင့် အပေါ်ဆုံးမှာ ဒီလိုလေးရေးပေးလိုက်တယ်….[/FONT]
[FONT="]Output [/FONT]
[FONT="]4 က user input ပါ။
[/FONT] [FONT="]ဒီ program လေးကို ရေးဖို့အတွက် Visual Studio ထဲမှာ File->New->Project->C# language->Console Application ကိုရွေးပါမယ်။ ဒါဆိုရင် class တွေ Main function နေရာတွေ IDE က auto လုပ်ပေးသွားလိမ့်မယ်။ အဲ့ဒီ ထဲမှာ ရိုက်ရုံပါပဲ။ ပြီးလို့ run မယ်ဆိုရင်တော့ F5 ပါ။ အသေးစိတ်ပြောဖို့လိုရင် ပြန်ပြောပါခင်ဗျာ။[/FONT]
I'am waiting for your next lesson.
:103:
ကျွန်တော်ဆက်ရေးမှာပါ... လာမယ် ကြာမယ်ပေါ့
မိုက်တယ်ဗျာ ..အားပေးတယ် ..
ဆက်ရေးပါဗျာ ဖတ်နေပါတယ်။ C# ကမလုပ်တာ ကြာတော့ မေ့တောင်မေ့ချင်နေပြီ။
Console.WriteLine နဲ့ Console.Write မတူတာလေးတွေ လဲထည့်ရေးပါဦး။ ကျွန်တော် လည်းမေ့နေတာ အစ်ကို့ ပို့စ် တွေမှ ပြန်သတိရလာတယ်။ :58: အင်း .net ပြန် install လုပ်ဦးမှပဲ။ စာပြန်ဖတ် ပြီး ၀ိုင်းကူမယ်လေ။:D အားပေးနေတယ် ဆက်လုပ်နော်။
ရသမျှအချိန်လေးတွေကို ဖဲ့ဖဲ့ပြီးတော့ ရေးပေးနေတာ ကျေးဇူးဂေါ်ဇီလာပါ။
နောက်ထပ်လည်း Post တွေတင်ပေးပါအုန်း။
ကိုဘီလူးဗိုင်းရပ်ရေ အခုလို့ ၀ိုင်းကူပေးမယ်ဆိုလို့ အထူးကျေးဇူးတင်တယ်ဗျာ။
ကျွန်တော်တို့ Console Screen မှာ output ထုတ်ပြမယ်ဆိုရင်၊ သုံးလို့ရတဲ့ function ၂ ရှိတယ်ဗျ။ Console.Write နဲ့ Console.WriteLine ပေါ့။ အဲ့ဒီ ၂ ခုဘာကွာလဲဆိုရင် Console.Write ကိုသုံးရင် ကျွန်တော်တို့ output ထုတ်လိုက်တဲ့ စာတွေရဲ့ နောက်ဆုံးမှာ cursor လေး မှိတ်တုတ်၊ မှိတ်တုတ်နဲ့ ရှိနေတယ်။ user ကနေ စာဆက်ရိုက်မယ်ဆိုရင် အဲ့ဒီနေရာနောက်ဆုံးကနေ ဆက်ပြီး ပေါ်လာပါလိမ့်မယ်။
Console.WriteLine ကိုသုံးမယ်ဆိုရင်တော့ cursor ဟာ နောက်ဆုံးမှာ ရှိမနေပဲ အောက်တစ်လိုင်းကိုဆင်းသွားမှာ ဖြစ်ပါတယ်။ ဒါကြောင့် တစ်လိုင်းပြီး တစ်လိုင်း user ကို output ထုတ်ပြမယ်ဆိုရင် Console.WriteLine ကိုသုံးလေ့ရှိပြီး၊ user ဆီကနေ input တောင်းချင်တဲ့ အခါမျိုးမှာ Console.Write ကိုသုံးလေ့ ရှိပါတယ်။
ဒီလိုပဲ user ဆီကနေ input ပြန်လက်ခံချင်တယ်ဆိုရင်လည်း Console.Read() နဲ့ Console.ReadLine() ဆိုပြီး function ၂ ခုရှိပါတယ်။ Console.ReadLine() က user ရိုက်ထည့်တဲ့ စာသားတွေအားလုံးကို လက်ခံပေးပြီး string type အနေနဲ့ return ပြန်ပါတယ်။ Console.Read() ကတော့ user ရိုက်တဲ့ ပထမဆုံးchar ရဲ့ ASCII Code ကို integer type အဖြစ်ပြန်ထုတ်ပေးပါတယ်။ Console.Read() ကို user ဆီကနေ enter တစ်ချက်ခေါက်တာကို စောင့်နေပေးဖို့ အတွက် သုံးလေ့ ရှိပါတယ်။
ဥပမာ။
[FONT="]ဒီပုံလေးထဲကလို ဖြစ်သွားမှာပေါ့ဗျာ….[/FONT]
[FONT="]ဒါကို error တက်သွားတယ်လို့ ခေါ်မယ်ထင်တယ်။ ဟုတ်တယ်ဟုတ် [/FONT]:)
[FONT="]ကဲ… အခု ကျွန်တော်ပြောချင်တာက Error တွေအကြောင်းပါပဲဗျာ။ ကျွန်တော်တို့ program တွေရေးတဲ့အခါ error ဆိုတာတွေနဲ့က မလွဲမသွေတွေ့ကြုံနေရမှာပါပဲ။ အဓိကကတော့ error အမျိုးအစား ၃ မျိုးရှိတယ်ဗျ။[/FONT]
[FONT="]1 – compile error ( grammar error, syntax error လိုလဲခေါ်သေးတယ်ဗျ )[/FONT]
[FONT="]2 – logic error ( semantic error )[/FONT]
[FONT="]3 – run time error[/FONT]
[FONT="]1)[/FONT][FONT="]Compile Error[/FONT]
[FONT="]Compile error ဘယ်အချိန်မှာ ဖြစ်လည်းဆိုတော့ ကျွန်တော်တို့ ရေးလိုက်တဲ့ source code တွေကို compiler က နားမလည်တော့ဘူး ဆိုရင် compile error ဖြစ်တာပေါ့။ ဥပမာအားဖြင့် statement အဆုံးမှာ semicolon (;) ကျန်ခဲ့တာတို့။ Main function ကို m အသေးနဲ့ ရေးတာတို့ စသည့်ဖြင့်ပေါ့။ compile error က အတွေ့အများဆုံးနဲ့ ဖြေရှင်းရအလွယ်ဆုံး error အမျိုးအစားဖြစ်တယ်ဗျ။[/FONT]
[FONT="]2)[/FONT][FONT="]Logic Error[/FONT]
[FONT="]Logic error ဆိုတာကတော့ programmer ရဲ့ စဉ်းစားပုံမှားလို့ ဖြစ်စေ၊ careless ဖြစ်ပြီး မှား ရိုက်မိလို့ ဖြစ်စေ၊ program ရဲ့ output မှာ အဖြေမှန် မထွက်တော့ပဲ၊ wrong result ထွက်လာတာမျိုးကို ဆိုလိုတာပါ။ ဥပမာ..[/FONT]
[FONT="]Console.WriteLine(“Square of {0} is {1}”, num, num*num); [/FONT]
[FONT="]လို့ ရေးရမယ့်နေရာမှာ [/FONT]
[FONT="]Console.WriteLine(“Square of {0} is {1}”, num, num+num); [/FONT]
[FONT="]လို့ ရေးလိုက်မိတယ်ဆိုပါစို့။ ဒါဆိုရင် program က compile error တက်မလား ? မတက်ဘူးနော် result တော့ပြမှာပဲ။ ဒါပေမယ့် ပြတဲ့ အဖြေက ကိုယ်လိုချင်တဲ့ အဖြေထွက်မလား.. မထွက်တော့ဘူးလေ။ ဟုတ်တယ်မလား။ ဒါဆိုရင် ဒီ program မှန်တယ်လို့ ပြောလို့ ရမလား။ မရပါဘူး။ ဒီလို error မျိုးကို logic error လို့ ခေါ်ပါတယ်။ logic error တွေကို ဖြေရှင်းဖို့ အတွက်တော့ ကျွန်တော်တို့ program ကို line by line Trace လိုက်ပြီး error ကိုရှာရပါမယ်။[/FONT]
[FONT="]3)[/FONT][FONT="]Runtime Error[/FONT]
[FONT="]Runtime error ကတော့ အပေါ်ဆုံးမှာ ကျွန်တော်ပြထားတဲ့ ပုံထဲက error မျိုးပေါ့။ user fault ကြောင့်ဖြစ်စေ၊ ကွန်ပျူတာရဲ့ အမှားကြောင့်ဖြစ်စေ program မှားသွားတာမျိုးပေါ့။ အမြဲတမ်းမှားမလားဆိုတော့ user သာ အမှန်ထည့်ရင် မမှားဘူး။ user ကမှားထည့်တာနဲ့ ကျွန်တော်တို့ program လည်း မှားသွားမယ်။ ဒါပေမယ့် တကယ်ကောင်းမွန်ပြည့်စုံတဲ့ program တစ်ခုဖြစ်ဖို့အတွက် ဒီလို error မျိုးတွေကိုလည်း မဖြစ်အောင် programmer က စဉ်းစားပေးနိုင်ရမယ်။[/FONT]
[FONT="]Runtime error တွေကို ဖြေရှင်းဖို့အတွက်တော့ ကျွန်တော်တို့ Error Handling (Exception Handling) Statement ကိုသုံးရပါမယ်။ အားလုံး သိပြီးသားဖြစ်တဲ့ try…..catch ကိုပြောတာပါ။[/FONT]
[FONT="]Exception Handling [/FONT]
[FONT="]Runtime error တွေကို handle လုပ်ဖို့အတွက် error ဖြစ်နိုင်တဲ့ statement တွေကို try{ နဲ့ } ကြားမှာ ရေးရပါမယ်။ ပြီးရင် အကယ်လို့ error ဖြစ်ခဲ့သည်ရှိသော် အဲ့ဒီ error ကို ကိုင်တွယ်ဖြေရှင်းပေမယ့် statement တွေကိုတော့ catch{ နဲ့ } ကြားမှာ ရေးရပါမယ်။ဥပမာ…[/FONT] [FONT="]String temp ထဲမှာ ရှိတဲ့ data ကို integer အဖြစ်ပြောင်းလို့ ရရင် num ထဲကို ၀င်သွားမယ်။ catch ထဲကို မ၀င်ပဲ Program အလုပ်ဆက်လုပ်သွားမယ်။ ပြောင်းလို့ မရဘူးဆိုရင်တော့ catch ထဲကို ၀င်လာပြီး user ကို error message ပြတယ်။ num ထဲကို zero ထည့်ပြီး program အလုပ်ဆက်လုပ်ပါလိမ့်မယ်။ try.. catch ကိုသုံးခြင်းကြောင့် ကျွန်တော်တို့ program က လမ်းတ၀က်မှာ ရပ်သွားတာမျိုး ရှိတော့မှာ မဟုတ်ပါဘူး။ [/FONT]
[FONT="]အခု error handling statement ကို detail ကြည့်ရအောင်။ အပေါ်က example အတိုင်းဆိုရင် Convert လုပ်တဲ့ အချိန်မှာ error တက်တာနဲ့ catch ထဲက အလုပ်တွေကို သွားပြီးလုပ်မှာပါ။ try statement ထဲမှာ error ဖြစ်နိုင်တဲ့ statement က တစ်ခုထဲရှိတဲ့ အချိန်မှာ သိပ်ပြီး ကိစ္စမရှိပဲ error messge ပြလို့ရပါတယ်။ ဒါပေမယ့် တခါတလေမှာ error ဖြစ်နိုင်တဲ့ statement တွေက တစ်ခုထက်ပိုပြီးတော့လည်း ရှိနိုင်ပါတယ်။ error အမျိုးအစားကလည်း မတူဘူးဆိုရင် catch ထဲမှာ user ကို error ပြတဲ့ နေရာမှာ detail information ပြလို့ မရတဲ့ အခက်အခဲရှိလာပါတယ်။ ဒီ example ထဲမှာ ဆိုရင်ပဲ error ဖြစ်နိုင်တဲ့ အခြေအနေက ၂ မျိုးရှိနေပါတယ်။ number အစားတခြားဟာထည့်လိုက်ရင် FormatException ဖြစ်ပြီး၊ number ကြီးပဲ ၁၅ လုံးလောက်ရိုက်ထည့်လိုက်ရင် OverFlowException ဖြစ်ပါတယ်။ ဒါပေမယ့် ဘယ်exception ပဲဖြစ်ဖြစ် ကျွန်တော်တို့ catch ထဲမှာ ရေးထားတဲ့ Invalid Input ဆိုတဲ့ message ပဲ ပြပါလိမ့်မယ်။ ဒါကို ကျွန်တော်တို့က ပိုပြီး detail ကြတဲ့ message ပြချင်တယ်ဆိုရင်တော့ Catch ရေးတဲ့ အခါမှာ Exception အမျိုးအစားနဲ့ parameter ခွဲပြီး လက်ခံလို့လည်း ရပါတယ်။ ဒီလိုမျိုးပါ..[/FONT] [FONT="]ဒါဆိုရင်တော့ user ထည့်တာ number မဟုတ်ရင် Please enter number value ဆိုပြီး ပြပါမယ်။ တန်ဖိုး အရမ်းကြီးနေရင်တော့ Your number is too large ဆိုပြီး detail ပြနိုင်ပါလိမ့်မယ်။ ကဲဒါဆိုရင် error အမျိုးအစားတွေနဲ့ exception handling အကြောင်းအကြမ်းလေးတော့ သိမယ်ထင်ပါတယ်။ program လေးကို ပြန်ပြင်ရေးလိုက်ပါဦးနော်။[/FONT] [FONT="]စမ်းရေးကြည့်ကြပါဦး။ နောက်နေဆက်ကြတာပေါ့။[/FONT]
ကျွန်တော်လည်းအားပေးနေပါတယ်
ဆက်လုပ်ပါဗျာ
acidRain
[FONT="]ကျွန်တော် အဓိက ပြောချင်တာကတော့ ဒီ operator လေးတွေနဲ့ ပတ်သက်ပြီး သိသင့်တာလေးတွေပါ။ အရင်ဆုံး statement တစ်ခုအတွင်းမှာ operator တစ်ခုထက်ပိုပြီး ပါလာပြီဆိုရင် ဘယ်operator ကို အရင်ဆုံး အလုပ်လုပ်သွားမလဲ။ ဥပမာဗျာ ကျွန်တော်က output 20 ထွက်ချင်တယ်ဆိုရင် အောက်က ၂ ခုမှာ ဘယ်လိုရေးမှ မှန်မလဲ။
[/FONT] [FONT="]နံပါတ် ၁ အတိုင်းဆိုရင် output က 14 ဆိုပြီး ထွက်သွားပါလိမ့်မယ်။ ဒါဆိုရင်တော့ login error ဖြစ်ပြီပေါ့။ no 2 အတိုင်းရေးမှ ကျွန်တော်လိုချင်တဲ့ output ရပါလိမ့်မယ်။ ဒီနေရာမှာ operator တွေရဲ့ priority ကို သိဖို့လိုလာပါပြီ။[/FONT]
[FONT="]Precedence[/FONT]
[FONT="]Operators[/FONT]
[FONT="]Highest[/FONT]
[FONT="]+ - ! ~ ++x --x (T)x[/FONT]
[FONT="]* / %[/FONT]
[FONT="]+ -[/FONT]
[FONT="]<< >>[/FONT]
[FONT="]< > <= >= is as[/FONT]
[FONT="]== !=[/FONT]
[FONT="]&[/FONT]
[FONT="]^[/FONT]
[FONT="]|[/FONT]
[FONT="]&&[/FONT]
[FONT="]||[/FONT]
[FONT="]Lowest[/FONT]
[FONT="]= *= /= %= += -= <<= >>= &= ^= |=[/FONT]
[FONT="]operator တွေ ၁ခုထပ်ပိုတွေ့ရင် Precedence အမြင့်ဆုံးကို အရင်ဆုံးလုပ်ပါတယ်
အတိုမှတ်ချင်ရင်တော့[/FONT] [FONT="]လောက်မှတ်ထားရင် လုံလောက်ပါတယ်။ ( ) ကိုအရင်ဆုံးလုပ်မယ်။ ပြီးရင် * / ။ နောက်ဆုံးမှ + - ပေါ့။ ရမယ်နော်။
နောက်တခုပြောချင်တာက increment operator(++) & decrement operator(--) အကြောင်းပါ။ ကျွန်တော့ဆီမှာ ရှိတဲ့ integer value တစ်ခုကို 1 တိုးချင် 1 လျှော့ချင်ရင် အဲ့ဒီ့ operator တွေ သုံးရပါတယ်။
ဒီ statement လေးက output ဘယ်လောက်ထွက်မလဲ စဉ်းစားကြည့်ပါဦး။[/FONT] [FONT="]output = 7 or 8 or 9 ????[/FONT]
[FONT="]increment operator ကို ရှေ့မှာ ရေးရင် pre incrememt နောက်မှာ ရေးရင် post increment လို့ခွဲတယ်။ pre ဆိုရင် အရင်လုပ်တယ်။ post ဆိုရင် နောက်မှလုပ်တယ်ပေါ့။ ဒါဆိုရင်တော့ output ဘယ်လောက်ထွက်မလဲဆိုတာ မှန်းနိုင်လောက်ပြီထင်တယ်နော်။ (num1++) က ပေါင်းတဲ့ အချိန်မှာ 3 ပဲရှိသေးတယ်။ (++num2) ကတော့ 5 ဖြစ်နေပြီး။ ဒါကြောင့် 8 ထွက်ပါတယ်။[/FONT]
[FONT="]ကဲ နောက်ထပ်သိထားစရာ တစ်ခုရှိသေးတယ်ဗျ။ အဲ့ဒါကတော့ operator တွေ့ ပေါင်း၊နှုတ်၊မြောက်၊စား လုပ်တဲ့ အခါ datatype တူရင် တူတဲ့type ထွက်တယ်။ မတူဘူးဆိုရင်တော့ ကြီးတဲ့type ထွက်ပါတယ်။ ဒါပေမယ့် integer ထက်သေးတဲ့ type တွေ ဆိုရင်တော့ integer type ထွက်ပါတယ်။
ဥပမာ...[/FONT] [FONT="]ဒီ program လေး ရေးပြီး run ကြည့်လိုက်ပါဦး။[/FONT] [FONT="]program ထဲက {0:C} ဆိုတာက 0 index က တန်ဖိုးကို currency format နဲ့ ပြမယ်ပြောတာ။ {0: D5} ဆိုတာက နေရာ ၅ နေရာ အပြည့်ယူပြီး နောက်ဆုံးကနေ ပြမယ်။ စသည်ဖြင့်ပေါ့။ run ကြည့်လိုက်ရင် သိသွားမှာပါ။ ဒီနေ့တော့ ဒီလောက်နဲ့ပဲ နားလိုက်ရအောင်ဗျာ။ [/FONT]
Function
Function တစ်ခုမှာ return type , function name and argument list ဆိုပြီး အပိုင်း ၃ ပိုင်းပါတယ်ဗျ။ ဥပမာ…. ဒီ function လေးမှာ int လို့ရေးလိုက်တာကို return type လို့ခေါ်ပါတယ်။ ဒီ function လေးကို ခေါ်မယ်ဆိုရင် integer value တစ်ခု ပြန်ထွက်လာမယ်လို့ ပြောတာပါ။ return value မရှိဘူးဆိုရင်တော့ void လို့ ရေးပေးရပါတယ်။ မပေးလို့တော့ မရပါဘူး။ AddTwoNumber ဆိုတာကတော့ function name ပေါ့။ function name တွေ ပေးတဲ့နေရာမှာ space တွေ special char တွေ ထည့်ပေးလို့ မရပါဘူး။ ( ) ထဲမှာ ရေးလိုက်တဲ့ int p1, int p2 ဆိုတာတွေက argument တွေပါ။ ဒီ function ကိုခေါ်သုံးချင်ရင် ထည့်ပေးရမယ့် parameter တွေပါခင်ဗျာ။ parameter လက်မခံချင်တဲ့ function တွေရေးရင်တော့ ( ) ထဲမှာ ဘာမှ မထည့်ပဲရေးလို့ ရပါတယ်။
Function တခုမှာရေးတဲ့ပုံပေါ်မူတည်ပြီး function declaration, function definition နဲ့ function call ဆိုပြီး ခွဲခြားထားပါသေးတယ်။ အခု အပေါ်မှာ ရေးလိုက်တဲ့ function ကို function definition လို့ခေါ်ပါတယ်။ ဘာလို့လဲဆိုတော့ ဒီ function ထဲမှာ ဘာအလုပ်တွေလုပ်မယ်ဆိုတဲ့ statement တွေထည့်ရေးထားလို့ပါ။ အဲ့ဒီ function တွေကို Interface ထဲမှာ ထည့်ရေးတော့မယ်ဆိုရင်တော့ အခုလိုမျိုး definition တွေ ထည့်ရေးလို့ မရပါဘူး။ function declaration ပဲရေးခွင့်ရှိပါတယ်။ ဒီလိုမျိုးပါ…. ကျွန်တော်တို့ရေးထားတဲ့ function တွေကို ပြန်ခေါ်သုံးမယ်ဆိုရင်တော့ အဲ့ဒါကို function call လို့ ခေါ်ပါတယ်။ အပေါ်က function လေးကို ပြန်ခေါ်မယ်ဆိုရင် ဒီလိုလေး ခေါ်ရမှာပါ… note: function call ပဲဖြစ်ဖြစ် definition ပဲဖြစ်ဖြစ် declaration ပဲဖြစ်ဖြစ် function လို့ ပြောလိုက်တာနဲ့ ( ) ပါရမယ်ဆိုတာတော့ အသေသာမှတ်ထားလိုက်ဗျာ။
function parameter Passing အကြောင်းကို နောက်တပိုစ့်မှာ ရေးပေးမယ်ဗျာ။
ဆက်လက်ပြိးတော့ဖော်ပြပေးသွားပါ..ကိုsevenlamp ရဲ့စာကိုဖတ်ပြိးဆက်လက်လေ့လာသွားချင်လို့ပါ..တင်နိုင်သမျှ တင်ပေးစေချင်ပါတယ်...
ခင်မင်လျှက်
သန္တာ..:5::5::5:
prime number တွေကို စမ်းကြည့်တာရတယ်..ကျနော်က vs2008 ထဲမှာစမ်းကြည့်တာရတယ်..အစ်ကို ကူညီပေးပါအုံး
ကျွန်တော် နောက်ပိုစ့်၂ ခုလောက်မှာ looping အကြောင်းရေးမှာပါ။ matrix တွေလုပ်ချင်တယ်ဆိုရင်တော့ array အကြောင်းသိဖို့လိုလာပါလိမ့်မယ်။ ခဏလေးစောင့်ပေးနော်။ အရေးကြီးတယ်ဆိုရင်တော့ ညီလိုချင်တဲ့ program flow လေးကို သေချာလေး ပြောပြပေးနော်။ ကျွန်တော် ရေးပြီး ပြန်ရှင်းပြပေးမယ်။
အချိန်လေးများရမယ်ဆိုရင် တစ်ပတ်ကို ပို့စ် ၂ ခုလောက်ဖြစ်ဖြစ်တင်ပေးပါလားခင်ဗျာ။
ကျွန်တော်က အကိုရဲ့ ပို့စ်တွေကို စောင့်ဖတ်နေတာပါ။
ရောင်းတာမဟုတ်ဘူးဗျ။ အိမ်မှာ တစ်ညတစ်လုံး ထွန်းရတာ။
ရေးပေးပါ့မယ်ခင်ဗျာ။ အနည်းဆုံး တစ်ပတ်ကို ပိုစ့် ၂ ခုလောက်တင်ဖြစ်အောင်။
ကျွန်တော့် ဘလော့လေးကိုလည်း လာလည်ဖို့ ဖတ်ခေါ်ပါတယ်။
[FONT="]1. Value Parameter[/FONT]
[FONT="]2. Reference Parameter[/FONT]
[FONT="]3. Output Parameter နဲ့[/FONT]
[FONT="]4. Params Array တို့ ဖြစ်ပါတယ်။[/FONT]
[FONT="]1)[/FONT][FONT="]Value Passing[/FONT]
[FONT="] C# မှာ default parameter passing က value pass ပါ။ ဆိုလိုတာကတော့ ကျွန်တော်တို့ function ထဲကို parameter ပေးလိုက်တာက actual value ကို copy တစ်ခုအနေနဲ့ ထည့်ပေးလိုက်တာပါ။ ဒါကြောင့် function အတွင်းမှာ အဲ့ဒီ value ကို ဘယ်လိုပဲ ပြောင်းသည်ဖြစ်စေ၊ နဂို value တော့ ပြောင်းသွားမှာ မဟုတ်ပါဘူး။ ဥပမာ..[/FONT]
[FONT="]output[/FONT]
[FONT="]2)[/FONT][FONT="]Reference Passing[/FONT]
[FONT="]ကျွန်တော်က Inc function ထဲမှာ ပြောင်းလိုက်တဲ့ တန်ဖိုးကို main function ထဲမှာပါ လိုက်ပြီး ပြောင်းချင်တယ်ဆိုရင်တော့ reference pass လုပ်ပေးရပါမယ်။ reference pass လုပ်ဖို့အတွက်ဆိုရင် ref keyword လေးကို parameter ရဲ့ရှေ့မှာ ထည့်ပြီး ရေးပေးရမှာပါ။ တချို့ reference data type(class, array) တွေကို parameter ပို့ရင်တော့ ref keyword မထည့်ပေးလည်း ရပါတယ်။[/FONT]
[FONT="]output[/FONT]
[FONT="]3) output parameter[/FONT]
[FONT="] Output parameter က reference parameter နဲ့ ဆင်တူပါတယ်။ ဒါပေမယ့် output parameter ဆိုတဲ့ အတိုင်း သူ့ကို output return ပြန်ချင်တဲ့ variable တွေအတွက် သုံးလေ့ရှိပါတယ်။ function အတွင်းမှာ out variable ထဲကတန်ဖိုးကို assign မလုပ်သေးခင် ယူတွက်လို့မရပါဘူး။[/FONT] [FONT="]output[/FONT]
[FONT="]4) [/FONT][FONT="]Params Array[/FONT]
[FONT="] Function call မှာ ထည့်ပေးလိုက်တဲ့ value တွေကို array တစ်ခုအနေနဲ့ လက်ခံချင်တယ်ဆိုရင် params keyword ကိုသုံးရပါတယ်။ example လေးပဲ ကြည့်လိုက်တော့နော်။[/FONT] [FONT="]output[/FONT]
[FONT="]***ဒီ example လေးမှာ ကျွန်တော်ပေးလိုက်တဲ့ parameter 5 လုံးကို array အနေနဲ့ လက်ခံသွားတာကိုတွေ့ရမှာပါ။ [/FONT]
ဟုတ်ကဲ့ ကျွန်တော်လည်း ကြိုးစားပြီးရေးနေပါတယ်ခင်ဗျ။ အလုပ်အားတဲ့အချိန်လေးမှာ လုပြီးရေးနေရလို့ပါ။ ဒါကြောင့်မို့ စိတ်ရှည်ရှည်ထားပြီး ဖတ်ပေးပါခင်ဗျ။ btw, ကျွန်တော် PM ပို့ထားတယ်နော်။
်form တစ်ခုနဲ့တစ်ခု ချိပ်သုံးတဲ့ code လေးဖော်ပြပေးစေချင်ပါတယ်..ပြိးတော့ ရိုးရိုး c# နဲ့ c#.net ကရော ဘာကွာခြားမှုရှိပါသလဲ..ရှင်းပြပေးစေချင်ပါတယ်..ရိုးရိုးc#မှာ form တွေ ချိပ်ပြိးသုံးလို့ ရပါသလား...အချိန်မရှိတဲ့ အစ်ကိုရေ ကျနော်ကို ဒါလေးတော့ ရှင်းပြပေးပါအုံး..:):):)
C# နဲ့ C#.NET ဆိုတာက ကုလားကြီးနဲ့ အရာကြီးဆိုသလိုပေါ့ဗျာ အတူတူပဲ။ .NET ဆိုတာက Microsoft က ထုတ်ပေးလိုက်တဲ့ Framework ခေါ် standard တစ်ခုပေါ့ဗျာ။ အဲ့ဒီ standard ကိုလိုက်နာပြီး ရေးသားသော မည်သည့် programming language ကိုမဆို နောက်မှာ .NET ဆိုတာကြီး ထည့်ခွင့်ပေးတယ်။ .NET framework ပေါ်မှာ C# နဲ့ ရေးရင် C#.NET, VB နဲ့ ရေးရင် VB.NET စသည်ဖြင့်ပေါ့။ အဲ့ဒီ C# နဲ့ VB နဲ့ က Framework မှာ build in ပါလာပြီးသား language တွေဗျ။ ဒါကြောင့် .NET Framework မရှိပဲနဲ့လည်း ရေးလို့မရဘူး။
C# မှာ form တွေချိတ်ပြီး သုံးလို့ရလားဆိုတော့... ရတာပေါ့ဗျာ။
ဥပမာ....
ကျွန်တော့်မှာ form 2 ခုရှိတယ်ဆိုပါစို့... Form1.cs နဲ့ Form2.cs ပေါ့
form1.cs ထဲမှာရှိတဲ့ button ကိုနှိပ်ရင် form2.cs ကိုခေါ်ချင်တယ်ဆိုရင် ဒီလိုရေးရမှာပါ.... နားလည်လားတော့မသိဘူး...
.ခုအစ်ကိုရှင်းပြလို့နားလည်သွားပါပြိ..
ကျေးဇူးတင်လျက်..။
အခုကျွန်တော်ရေးနေတာလည်း တကယ့်ကို အခြေခံ basic ကနေစရေးနေတာပါခင်ဗျ။ (နားလည်ပြီးသား လူတွေက ရယ်တောင်ရယ်မယ်ထင်တယ်
C# software install လုပ်ချင်တယ်ဆိုရင်တော့ အကောင်းဆုံးက CD ဆိုင်ကနေသွား၀ယ်လိုက်ဗျ၊ ၁၀၀၀ကျပ်လောက်ပဲ ရှိမယ်။ ( download လုပ်ရင် 2MB လောက်ရှိတယ် ဆွေမျိုးပါမေ့သွားမယ် ရန်ကုန်ကော်နက်ရှင်နဲ့ဆို
ဒါလိုမှ မဟုတ်ပဲ down ပဲ down ချင်တယ်ဆိုရင်တော့ ဒီမှာ သွားယူစေသတည်း...
.NET Framework VS Studio ( Trial )
မသိတာတွေက ..တော်တော် များနေတော့ အစ်ကိုတောင် စိတ်ညစ်လာမှာနော....အစ်ကိုရေဖြေရှင်းပေးပါအုံး..
form တွေဆောက်ပြီး သုံးမယ်ဆိုရင်...
File -> New Project -> Window Form Application ကိုရွေးပေးလိုက်ပါ။
ွှWPF ကိုမရွေးနဲ့ဦးနော်။
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt16(txtp.Text);
int b = Convert.ToInt16(txtq.Text);
int n = a * b;
}
အဲ့တာသူရဲ့ result ကို form2 မှာ သွားပေါ်စေချင်တာ..အဲ့ဒါ မလုပ်တတ်တော့ဘူး..ပြောပေးပါအုံးအစ်ကိုရေ..
[FONT="]if…..else[/FONT]
[FONT="]switch[/FONT]
[FONT="]conditional operator (?:) [/FONT]
[FONT="]အရင်ဆုံး ဥပမာလေး တစ်ခုနဲ့ သူတို့ကို ဘယ်လိုသုံးလဲ ယှဉ်ပြီး ပြောကြည့်မယ်ဗျာ။ ကျွန်တော်က user ဆီကနေ number value တစ်ခုကို လက်ခံပြီး even လား order လား ဆိုတာ စစ်တဲ့ program လေးတစ်ခုရေးကြည့်ရအောင်။[/FONT]
[FONT="]ကျွန်တော် အနီရောင်ကာလာနဲ့ ရေးထားတဲ့အပိုင်းလေးကို ပြန်ရှင်းပြပါ့မယ်။ user ထည့်လိုက်တဲ့ တန်ဖိုးကို num ထဲမှာ သိမ်းလိုက်ပါတယ်။ အဲ့ဒီ တန်ဖိုးကို even ဖြစ်လားစစ်ဖို့အတွက် 2 နဲ့ စားကြည့်ပါတယ်။ အကြွင်းက 0 နဲ့ ညီနေရင် စားလိုပြတ်တယ်ပေါ့။ ဒါဆိုရင် စုံကိန်းဖြစ်ပြီး စားလို့ မပြတ်ဘူးဆိုရင်တော့ မကိန်းပါ။ if နောက်မှာ ကိုယ်စစ်ချင်တဲ့ expression ကို ( နဲ့ ) ထဲထည့်ရေးရပါတယ်။ ပြီး { } အတွင်းမှာ မှန်ရင် လုပ်ချင်တဲ့ အလုပ်ကိုရေးတယ်။ else နောက်က { } ထဲမှာတော့ မှားရင် လုပ်ချင်တဲ့ အလုပ်ကို ရေးရပါတယ်။ အခုကျွန်တော်ရေးထားသလိုမျိုး လုပ်ချင်တဲ့ အလုပ်က statement တစ်ကြောင်းထဲဆိုရင် { } ကို မထည့်ပေးဘူး ဆိုရင်လည်း မှန်ပါတယ်။ statement တစ်ကြောင်းထက်ပိုရင်တော့ { } ကို မထည့်ပေးလို့ မရပါဘူး။ if condition မှာ မှန်ရင်လုပ်ချင်တာပဲ ရှိပြီး မှားရင် လုပ်ချင်တာ မရှိဘူး ဆိုရင်လည်း else အပိုင်းကို ထည့်မရေးရပါဘူး။ အဲ.. မှားရင်လုပ်ချင်ပြီး မှန်ရင် လုပ်ချင်တာ မရှိဘူးဆိုရင်တော့ if ကို ဖြုတ်ထားပြီး else ကြီးပဲ ရေးလို့တော့ မရဘူးနော်။ အဲ့လိုလုပ်ချင်တယ်ဆိုရင်တော့ if () ထဲမှာ not (!) ခံပေးရပါမယ်။[/FONT]
[FONT="]ကဲ.. အခု switch ကိုသုံးပြီး ရေးကြည့်ရအောင်။[/FONT] [FONT="]switch ကိုသုံးပြီး စစ်ဖို့အတွက် switch နောက်မှာ ကိုယ်စစ်ချင်တဲ့ condition တစ်ခုထည့်ပေးရတယ်။ ပြီး အဲ့ဒီ condition ကထွက်လာမယ့် result တွေကို case နောက်မှာ ရေးပြီးစစ်ရပါတယ်။ case တွေကြိုက်သလောက် ရေးလို့ရပါတယ်။ case တစ်ခုစီအဆုံးမှာ break ထည့်ပေးရပါတယ်။ default ဆိုတာကတော့ else သဘောမျိုးပါ။ အပေါ်က case တွေအားလုံး မှားခဲ့ရင်လို့ အဓိပ္ပါယ်ရပါတယ်။ [/FONT]
[FONT="]ဒါလေးကိုပဲ conditional operator နဲ့ ပြောင်းစစ်ကြည့်ရအောင်…[/FONT]
[FONT="]Conditional operator ကိုသုံးရင်တော့ ( ? ) ရဲ့ရှေမှာ ကျွန်တော်စစ်ချင်တဲ့ expression ကိုရေးရတယ်၊ ( ? ) ရဲ့နောက်မှာ မှန်ရင်လုပ်ချင်တာရေး ( : ) ရဲ့နောက်မှာတော့ မှားရင် လုပ်ချင်တာကို ရေးရပါတယ်။[/FONT]
[FONT="]Selection statement တစ်ခုစီမှာ သူ့ အားသာချက်နဲ့ သူရှိကြပါတယ်။ ဒီထဲမှာ အသုံးအများဆုံးကတော့ အားလုံးသိကြတဲ့ if … else statement ပါပဲ။ condition စစ်ချင်တဲ့နေရာ တော်တော်များများမှာ if – else ကိုသုံးကြလေ့ရှိပါတယ်။ if-else မှာ variable အချင်းချင်း တိုက်စစ်လို့လည်း ရပါတယ်။ တခါတလေမှာတော့ ကျွန်တော်တို့မှာ စစ်စရာ အခြေအနေတွေ အရမ်းများနေရင်တော့ if-else နဲ့စစ်ရတာ အလုပ်ရှုပ်တယ်ထင်ရင် switch ကိုသုံးလေ့ ရှိပါတယ်။ ဥပမာဗျာ.. ကျွန်တော်က user ဆီကနေ ၀ ကနေ ၁၀ အတွင်း number တစ်လုံးထည့်ပေးပါလို့တောင်းမယ်။ ပြီး.. user ထည့်လိုက်တဲ့ number ကို ပြန်စစ်မယ်ဆိုပါတော့။ ဒီလိုမျိုးဆိုရင်တော့ if-else ထက် switch က ပိုပြီးသုံးလို့ကောင်းမှာပါ။ conditional operator နဲ့ရေးရင်တော့ အရမ်းကို ရှုပ်ထွေးသွားမှာပါ။ လုံး၀ အဆင်ပြေမှာမဟုတ်ပါဘူး။ [/FONT]
[FONT="]if-else[/FONT] [FONT="]switch[/FONT] [FONT="]Conditional Operator[/FONT] [FONT="]Switch နဲ့ရေးတာ အရှင်းဆုံးဖြစ်မယ်ထင်တယ်နော်။ ဒါပေမယ့် switch ရဲ့ အားနည်းချက်တွေကလည်း တော်တော်များတယ်ဗျ။ switch မှာ case နောက်မှာ constant expression ပဲရေးခွင့်ရှိတယ်။ variable တွေနဲ့စစ်လို့ မရဘူး။ ဥပမာ[/FONT] [FONT="]Conditional operator ကိုတော့ သိပ်ရှုပ်ရှုပ်ထွေးထွေး စစ်စရာ မလိုတဲ့ အခါမျိုးမှာ သုံးတယ်။ statement တစ်ကြောင်းထဲမှာ condition စစ်တဲ့ အပိုင်းကိုအပြီးအစီး ထည့်ရေးချင်ရင် သုံးတာပေါ့။ ကဲ… Selection Control Statement ကောင်းကောင်းရေးတက်လောက်ပြီ ထင်တယ်
form1 က result ကို form2 မှာပြဖို့ဆိုရင် အရင်ဆုံး constructor, property စတာတွေ အရင်သိရမယ်။ လောလောဆယ်တော့ အဲ့လို မလုပ်နဲ့.. messagebox ကိုသုံးပြီး ဒီလိုရေးကြည့်။
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt16(txtp.Text);
int b = Convert.ToInt16(txtq.Text);
int n = a * b;
MessageBox.Show(n.ToString());
}
*** MessageBox က form လေးတစ်ခုပဲ၊ predefine form ပေါ့။ ***
အဲ့ဒါသုံးရင် message box လေးကျလာတယ်..အဲ့ဒါမျိုးမဟုတ်ပဲ from2 ရဲ့ txtbox ထဲမှာပေါ်ချင်တာဆိုရင်ဘယ်လိုရေးရမှာလဲ..ပြောပေးပါအုံးအစ်ကိုရေ..
မဖြစ်မနေ form2 မှာ ပြချင်တယ် ဆိုရင် လုပ်စရာ နည်းလမ်း ၂ ခုရှိတယ်။
၁၊ နည်းလမ်း (၁)
Form2 ထဲမှာ Constructor အသစ်တခုဆောက်ရမယ်။
public Form2(int value)
{
Initial.........Co....();
textBox1.Text = value.ToString();
}
Form1 မှာ object ဆောက်တဲ့နေရာမှာ ကိုယ်အသစ်ဆောက်လိုက်တဲ့ constructor ကိုခေါ်ရမယ်
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt16(txtp.Text);
int b = Convert.ToInt16(txtq.Text);
int n = a * b;
Form2 f = new Form2(n);
f.Show();
}
၂။ နည်းလမ်း (၂)
Form2 ထဲမှာ property တစ်ခုဆောက်ပြီး အဲ့ဒီ property ကို Form1 ကနေ လှမ်းခေါ်ရမယ်။
property in Form2
public int SetResult
{
get{
return Convert.ToInt32(textBox1.Text);
}
set{
textBox1.Text = value.ToString();
}
}
call in Form1
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt16(txtp.Text);
int b = Convert.ToInt16(txtq.Text);
int n = a * b;
Form2 f = new Form2();
f.SetResult = n;
f.Show();
}
အစ်ကိုကျနော်ကိုသေချာရှင်းပြထားလို့ ကျေးဇူးပါ..:5::5::5:
ဘယ်လိုသွားရင်ရ နိုင်ပါမလဲ အစ်ကို..:5::5:
ဟုတ်တယ်ဗျ။ ကျွန်တော်လည်း တချက်တချက် ၀င်လို့ မရဘူး။ ကော်နက်ရှင်မကောင်းလို့ဖြစ်မယ်။ အခုကျွန်တော်၀င်တာ F5 ၆ ခါလောက်နှိပ်လိုက်တာ အခုရသွားပြီ။
အဲ... your-freedom နဲ့ ကျော်ပြီး၀င်တာတော့ တခါထည်းနဲ့ ၀င်လို့ရသွားတယ်။ နားမလည်တော့ဘူး :O:O:O ပုဂံ ကများ တမင်နှေးအောင် လုပ်ထားလား မသိပါဘူး။
freedom သုံးပြီး ၀င်ကြည့်ပါလား။
ဒီ Post ကိုတင်ပေးတဲ့အတွက် ကျေးဇူးတင်ပါကြောင်း......
................................................:6:............ပန်းလေပြေ.........:6:
အားပေးလျက်ပါ။
Thanks
နောက်လာမယ့် သင်ခန်းစာတွေကို မျှော်နေပါ့မယ်....
.....................................................ပန်းလေပြေ............