บทความ Web .NET และ Programming
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 12
ในตอนที่ผ่านมาได้พูดถึงข้อดีของภาษาซีชาร์ปที่มีคุณสมบัติ Expression Trees หรือ “ต้นไม้นิพจน์” ซึ่งเป็นข้อดีในภาษาซีชาร์ปที่ไม่พบในภาษาอื่น ๆ หลายภาษาอย่างเช่นภาษาซี หรือในภาษาจาวาสคริปต์ที่มีต้นไม้นิพจน์แบบย่นย่อ ไม่ใช่ต้นไม้นิพจน์เต็มรูปแบบอย่างที่เรากำลังพูดถึงอยู่ในขณะนี้
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 11
ข้อดีของภาษาซีชาร์ปคือมีคุณสมบัติดี ๆ ที่มีอยู่ในภาษาที่ได้รับความนิยมมากอย่างจาวาและไพธอน หนึ่งในคุณสมบัติเหล่านั้นคือ “ฟังก์ชันแบบอะนอนีมัส” (Anonymous Functions) ซึ่งเป็นบรรทัดคำสั่งหรือนิพจน์สั้น ๆ ที่ฝังตัวอยู่ในบรรทัดคำสั่งซึ่งสามารถใช้เมื่อใดก็ตามที่จำเป็นต้องใช้เดลลีเกต เราอาจใช้ฟังก์ชันแบบอะนอนีมัสเพื่อพร้างออพเจ็กต์เดลลีเกตแบบมีชื่อ หรือจะใช้เพื่อส่งออพเจ็กต์เดลลีเกตแบบมีชื่อไปเป็นพารามิเตอร์ของเมธอดก็ได้
มีอะไรใหม่ใน .NET Core 2 และ C# 7 : คุณสมบัติ ref return ,ref local กับ Local Function
คุณสมบัติ ref return เริ่มตั้งแต่C# 7.0 จากนั้นพอมาถึงC# 7.3 ก็เพิ่มคุณสมบัติ ref local เพื่อให้ใช้งานคู่กัน ทำให้เขียนโค้ดฝั่งmethodและฝั่งตัวรับได้สะดวกยิ่งขึ้นไปอีก ปรกตินักเขียนโค้ดอย่างเราจะใช้ตัวกระทำ ref (ความจริงเป็นmodifierแต่เพื่อให้กระชับต่อไปนี้จะเรียกว่าเป็น “คำสั่ง” ) เมื่อต้องการส่ง “ค่าอ้างอิง” ไปเป็นพารามิเตอร์ (คือการส่งค่าไปยังmethodโดยส่งค่าอ้างอิงไป ไม่ได้ส่งค่าของตัวแปรไป) หรือที่เรียกว่า “การผ่านตัวอ้างอิง” (pass by reference) นี่เป็นคุณสมบัติที่มีในC#ตั้งแต่versionแรก แต่มาตอนนี้เราสามารถใช้คำสั่ง ref ในลักษณะอื่น ๆ ได้ด้วย ในตอนที่ผ่านมาผู้เขียนได้พูดถึงการการใช้ ref return ไปแล้วบางส่วน ในบทความตอนนี้จะอธิบายรายละเอียดของ ref return ที่เหลือ และจะต่อด้วยเรื่องคุณสมบัติ ref local ด้วย
มีอะไรใหม่ใน .NET Core 2 และ C# 7 : ตัวกระทำ is กับ คุณสมบัติใหม่ในคำสั่ง switch และ Ref local
เริ่มในภาษาC# เวอร์ชั่น 7.0 ขึ้นไปตัวกระทำ is มีความสามารถเพิ่มจากเดิมเพื่อใช้ในงานตรวจสอบรูปแบบที่ซับซ้อนได้ดีขึ้นกว่าเดิม ตัวกระทำ is ใช้หาชนิดของtypeเพื่อตรวจสอบความเข้ากันได้ขณะrunโปรแกรม มันทำหน้าที่ตรวจว่า objectหรือผลลัพธ์จากนิพจน์สามารถแปลงไปเป็นชนิดข้อมูลที่กำหนดได้หรือไม่ มีsyntaxอย่างที่เห็นในรูปที่ 1 บรรทัด 3
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 10
ข้อดีของภาษาซีชาร์ปที่เหนือกว่าภาษาอื่น (อย่างภาษาซี) คือสนับสนุนการเขียนนิพจน์แลมบ์ดาในตัวโดยไม่ต้องเรียกใช้ส่วนเพิ่มขยายพิเศษใด ๆ นิพจน์แลมบ์ดาคือฟังก์ชันที่ไม่ระบุชื่อ (anonymous function) ที่เราสามารถนำมาใช้สร้างเดลลีเกตหรือเอ็กซ์เพรสชันทรี (expression tree) ได้ เราสามารถใช้นิพจน์แลมบ์ดาเพื่อเขียนฟังก์ชันท้องถิ่นเพื่อใช้เป็นอาร์กิวเมนต์ของฟังก์ชันและใช้เป็นค่าส่งกลับของฟังก์ชันก็ได้ นิพจน์แลมบ์ดาจะมีประโยชน์เป็นพิเศษเมื่อเราเขียนนิพจน์เพื่อสืบค้นข้อมูลด้วยภาษา LINQ
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 9
เมธอดเสริม (Extension Method) แปลกกว่าเมธอดสมาชิกอื่น ๆ ที่เวลานิยามเราต้องนิยามมันแบบสแตติกเมธอด (static method เมธอดที่เป็นสมาชิกของคลาส ไม่ใช่ของออพเจ็กต์) แต่เวลาเรียกใช้งานเรากลับต้องเรียกใช้งานแบบอินสแตนซ์เมธอด (instance method เมธอดที่เป็นสมาชิกของออพเจ็กต์ ไม่ใช่ของคลาส) พารามิเตอร์ตัวแรกของเมธอดเป็นตัวกำหนดว่าเมธอดนั้นทำงานกับอะไร ในรูปที่ 1 บรรทัดที่ 9 จะเห็นว่ามีคำสั่ง (โมดิไฟเออร์) this ปรากฏอยู่หน้าพารามิเตอร์ คำสั่ง this ทำหน้าที่กำหนดว่าเมธอดนี้ทำงานกับออพเจ็กต์ (ไม่ใช่กับคลาส)
มีอะไรใหม่ใน .NET Core 2 และ C# 7 : การ Deconstruct Tuple และ Type อื่น ๆ
ภาษาC# 7.0 ขึ้นไปสนับสนุนการประกาศตัวแปรแบบ discard ซึ่งเป็นตัวแปรแบบเขียนได้เท่านั้น (read-only) โดยที่ท่านจะประกาศตัวแปรแบบนี้กี่ตัวก็ได้ แต่ทุกตัวจะมีชื่อเดียวกันหมดคือ _ (เครื่องหมายขีดเส้นใต้หรือ underscore) ประโยชน์ของตัวแปรแบบ discard คือการนำไปใช้กับTuple (Tuple อ่านรายละเอียดเรื่องTupleได้จากบทความตอนก่อนหน้านี้) เพราะการรับค่าส่งกลับจากmethodที่ส่งค่ากลับเป็นTuple หรือการเรียกใช้methodที่มีพารามิเตอร์แบบ out เราจะต้องประกาศตัวแปรไว้รับค่า ซึ่งบ่อยครั้งที่เราไม่ต้องการใช้ค่าจากตัวแปรเหล่านั้น แต่ก็จำต้องประกาศ ทำให้โค้ดรกรุงรังโดยเปล่าประโยชน์
มีอะไรใหม่ใน .NET Core 2 และ C# 7 : สนับสนุนการใช้งาน Tuple
ใน.NET Core 2.0 สนับสนุนภาษา C# version 7.0 ที่มีtypeใหม่คือ “Tuple” (Tuple) และใน.NET Core 2.1 สนับสนุน C# 7.1 สนับสนุนการอ้างTupleแบบ Inferred ที่ช่วยให้การเขียนโค้ดทำได้กระชับขึ้น
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 8
เนื่องจากพอยน์เตอร์เป็นสิ่งมีประโยชน์และน่าสนใจมาก และเป็นข้อดีของภาษาซีชาร์ปที่ภาษาอื่น ๆ ไม่มี (ยกเว้น ซี ซีพลัสพลัสและโก) จึงขอเสนอตัวอย่างการใช้งานพอยน์เตอร์ในภาษาซีชาร์ปเพิ่มเติมต่อจากตอนที่แล้วอีกเล็กน้อย ปัญหาอย่างหนึ่งของการใช้งานพอยน์เตอร์คือ เราจะกระทำกับพื้นที่ในหน่วยความจำโดยตรง และเป็นพื้นที่ ๆ เราจองไว้โดยการประกาศตัวแปร แต่ ตัวเก็บขยะ (garbage collector) อาจนึกว่าเป็นขยะและอาจโยกย้ายหรือเก็บเอาไปทำลายได้ตามใจชอบ โดยเราไม่สามารถกำหนดกฎเกณฑ์อะไรได้
.NET Core 2 C# 7 : การทำงาน .NET Core ร่วมกับ Docker
.NET Core 2.1 ได้รับการปรับปรุงให้ทำงานร่วมกับ Docker ได้ดีขึ้น การใช้ .NET Core ร่วมกับ Docker มีความเหมาะสมหลายอย่าง เพราะความที่ .NET Core มีขนาดเล็กและมีสภาพเบ็ดเสร็จในตัว จึงเหมาะที่จะทำเป็น container ของ Docker




