c# รบกวนผู้รู้อธิบาย Code ให้ฟังหน่อยครับ

ศึกษา c# เองจาก Internet ครับ (หาซื้อหนังสือไม่ได้ ที่เห็นๆยังมีขายออนไลน์ตอนนี้ก็ c#3.0(เห็นเขาว่าเล่มดัง) แต่ก็เก่าไปหน่อย  น้อยใจทำไมหนังสือ Java หาง่ายกว่ามาก T_T.....ร้องไห้) ตอนนี้อ่านจบเรื่อง delegate ก็ยังติดงงๆอยู่ แต่อ่านเรื่อง BackgroundWorker เข้าใจดี  เห็น Code นี้พยายามทำความเข้าใจกับมันมาหลายวัน(ไม่เกี่ยวกับ Delegate หรือ Worker) แต่แปลกที่อ่านยังไงก็ไม่เข้าใจ(สงสัยยังอ่อนอยู่ ฮา) ตอนนี้ว่าจะไปอ่านเล่ม Fundamentals of Computer Programming with CSharp Nakov 2013 หรือไม่ก็  microsoft visual c-sharp 2013 stepฺBystep (มีใครทราบบ้าง?)
      เข้าเรื่องดีกว่าได้ถามทีถามเป็นชุด ฮา   รบกวนผู้รู้อธิบายละเอียดๆให้ด้วยนะครับ  หมายเหตุ Code ที่ 1 copy มาจาก StackOverFlow  และ Code ที่ 2 มีคนเผยแพร่ในเว็บไทยแต่จำไม่ได้ว่าเว็บไหน ขออนุญาตเจ้าของ Code ด้วยนะครับ

public static string NumberToWords(int number)
        {
            if (number == 0)              
                return "zero";
            if (number < 0)
                return "minus " + NumberToWords(Math.Abs(number));
            string words = "";
            if ((number / 1000000) > 0)
            {
                words += NumberToWords(number / 1000000) + " million ";
                number %= 1000000;
            }
            if ((number / 1000) > 0)
            {
                words += NumberToWords(number / 1000) + " thousand ";
                number %= 1000;
            }
            if ((number / 100) > 0)
            {
                words += NumberToWords(number / 100) + " hundred ";
                number %= 100;
            }
            if (number > 0)
            {
                if (words != "")                                        // บรรทัดนี้ใช้คำสั่ง word != null แทนได้หรือไม่ ยังงงๆกับ null อยู่ครับ
                    words += "and ";
                var unitsMap = new[] { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen" };
                var tensMap = new[] { "zero", "ten", "twenty", "thirty",
"forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
                if (number < 20)
                    words += unitsMap[number];
                else
                {
                    words += tensMap[number / 10];
                    if ((number % 10) > 0)
                        words += "-" + unitsMap[number % 10];
                }
            }

            return words;
        }
        static void Main(string[] args)     // หมายเหตุ MeThod นี้ข้าพเจ้าใส่เข้าไปเอง แต่ตอนนี้พยายามแปลงในรูป windows Form ยังมึนอยู่จ้า      เนื่องจากยังไม่เข้าใจด้านบน
        {
            int number = int.Parse(Console.ReadLine());
            Console.WriteLine("{0}", NumberToWords(number));
            Console.ReadKey();
        }

    

    //Code ที่2
เม่าแพนด้า



public static string numConvertChar(string txt)
        {
            string bahtTxt, n, bahtTH = "";
            double amount;
            try { amount = Convert.ToDouble(txt); }
            catch { amount = 0; }
            bahtTxt = amount.ToString("####.00");
            string[] num = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
            string[] rank = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
            string[] temp = bahtTxt.Split('.');
            string intVal = temp[0];
            string decVal = temp[1];
            if (Convert.ToDouble(bahtTxt) == 0)
                bahtTH = "ศูนย์บาทถ้วน";
            else
            {
                for (int i = 0; i < intVal.Length; i++)
                {
                    n = intVal.Substring(i, 1);
                    if (n != "0")
                    {
                        if ((i == (intVal.Length - 1)) && (n == "1"))
                            bahtTH += "เอ็ด";
                        else if ((i == (intVal.Length - 2)) && (n == "2"))
                            bahtTH += "ยี่";
                        else if ((i == (intVal.Length - 2)) && (n == "1"))     //บรรทัดนี้ลองลบออกแล้วแทนค่าต่างๆโปรแกรมก็ปกติ งง
                            bahtTH += "";
                        else
                            bahtTH += num[Convert.ToInt32(n)];
                        bahtTH += rank[(intVal.Length - i) - 1];
                    }
                }
                bahtTH += "บาท";
                if (decVal == "00")
                    bahtTH += "ถ้วน";
                else
                {
                    for (int i = 0; i < decVal.Length; i++)
                    {
                        n = decVal.Substring(i, 1);
                        if (n != "0")
                        {
                            if ((i == decVal.Length - 1) && (n == "1"))
                                bahtTH += "เอ็ด";
                            else if ((i == (decVal.Length - 2)) && (n == "2"))
                                bahtTH += "ยี่";
                            else if ((i == (decVal.Length - 2)) && (n == "1"))  //บรรทัดนี้ลองลบออกโปรแกรมก็ปกติเช่นกัน
                                bahtTH += "";
                            else
                                bahtTH += num[Convert.ToInt32(n)];
                            bahtTH += rank[(decVal.Length - i) - 1];
                        }
                    }
                    bahtTH += "สตางค์";
                }
            }
            return bahtTH;
          }
        static void Main(string[] args)    // Method นี้สร้างเอง
        {
            string Txt = Console.ReadLine();
            Console.WriteLine("{0}", numConvertChar(Txt));
            Console.ReadKey();
        }


รบกวนด้วยครับ  ข้าน้อยจนปัญญา เต่าเอือม
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่