บทความ Web .NET และ Programming

มีอะไรใหม่ใน .NET 5 และ C# 9
.NET 5.0 เป็นเวอร์ชั่นใหม่ของ .NET Core ต่อจากเวอร์ชั่น 3.1 โดยชื่อจะเรียก “.NET 5.0” แทนที่จะเป็น .NET Core 4.0 โดยทางบริษัทไมโครซอฟต์มีเหตุผลหลัก ๆ คือ

Using declarations ใน .NET Core 3 และ C#8
บทความนี้กล่าวถึง Using declarations ใน .NET Core 3 และ C#8 เปรียบเทียบกับการใช้ Using แบบเดิมก่อนที่เขียนใน Version ก่อนหน้า

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 9
เมธอดเสริม (Extension Method) แปลกกว่าเมธอดสมาชิกอื่น ๆ ที่เวลานิยามเราต้องนิยามมันแบบสแตติกเมธอด (static method เมธอดที่เป็นสมาชิกของคลาส ไม่ใช่ของออพเจ็กต์) แต่เวลาเรียกใช้งานเรากลับต้องเรียกใช้งานแบบอินสแตนซ์เมธอด (instance method เมธอดที่เป็นสมาชิกของออพเจ็กต์ ไม่ใช่ของคลาส) พารามิเตอร์ตัวแรกของเมธอดเป็นตัวกำหนดว่าเมธอดนั้นทำงานกับอะไร ในรูปที่ 1 บรรทัดที่ 9 จะเห็นว่ามีคำสั่ง (โมดิไฟเออร์) this ปรากฏอยู่หน้าพารามิเตอร์ คำสั่ง this ทำหน้าที่กำหนดว่าเมธอดนี้ทำงานกับออพเจ็กต์ (ไม่ใช่กับคลาส)

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ : Interface กับ การสืบคุณสมบัติจากหลายแหล่ง (Multiple Inheritance)
การออกแบบและเขียนโปรแกรมแบบ OOP (Object Oriented) ตั้งอยู่บนหลักการสามประการที่เปรียบได้กับสามเสาหลัก ประกอบด้วย Encapsulation, Inheritance และ Polymorphism หากท่านเข้าใจหลักการทั้งสามนี้ ก็เท่ากับว่าท่านเข้าใจหัวใจของ OOP ทั้งหมดแล้ว สำหรับบทความนี้จะกล่าวถึงการสืบคุณสมบัติ หรือ Inheritance นั่นเอง

มีอะไรใหม่ใน .NET Core 3 และ C# 8 : Stackalloc ซ้อนนิพจน์
เริ่มตั้งแต่ C# 8 และ .NET Core 3.0 ถ้าผลลัพธ์ของนิพจน์ stackalloc มีชนิดข้อมูลเป็นแบบ System.Span หรือ System.ReadOnlySpan เราสามารถใส่นิพจน์ stackalloc ซ้อนไว้ภายในนิพจน์อื่น ๆ ได้

ภาษา C# และภาษา CIL เป็นมาตรฐานสากล รับรองโดยองค์กร ISO และ ECMA
ภาษา C# และภาษา CIL เป็นมาตรฐานสากล รับรองโดยองค์กร ISO และ ECMA โดยข้อกำหนดจำเพาะ (specification) ของภาษา C# ปรากฏในเอกสารที่รับรองโดย ISO และ ECMA เอกสารนี้ (ECMA-334 และ ISO/IEC 23270) เป็นอกสารหนาหกร้อยหน้า พรรณนาถึงข้อกำหนดของภาษา C# โดยละเอียดทุกแง่มุม เป็นเอกสารที่เปิดให้สาธรณะชนดาวน์โหลดมาอ่านได้โดยอิสระ

ข้อดีของภาษา C# : Auto-property initializers
ภาษา C# สร้างความอุ่นใจในการใช้งานตัวแปร เพราะคอมไพเลอร์จะกำหนดค่าเริ่มต้นให้ตัวแปรโดยอัตโนมัติ ขณะที่บางภาษา เช่น C ไม่มีหลักประกันเช่นนี้

มีอะไรใหม่ใน .NET Core 3 และ C# 8 : String Interpolation
.NET Core 3 ได้รับการปรับปรุงเรื่อง "การหาค่าของ string" (string interpolation) เมื่อใช้ร่วมกับสัญลักษณ์ $ และ @ โดยอนุญาตให้การประเมินค่าของ "การระบุอย่างตรงตามที่เขียน" (interpolated verbatim strings) สามารถกำหนดลำดับได้ทั้ง [email protected]"..." และ @$"..." แปลกจากเวอร์ชันก่อนหน้านี้ที่เขียนได้เพียง [email protected]"..." เท่านั้น สัญลักษณ์ $ ทำหน้าที่ระบุว่า string ที่ตามมาอาจมีการสอดแทรกค่าที่ตัวแปลภาษาจะต้องนำไปถอดความก่อนจะดำเนินการอย่างอื่นกับมันต่อไป โดยค่าดังกล่าวอาจเป็นเพียงค่าจากตัวแปรหรือซับซ้อนกว่านั้น เช่นเป็นนิพจน์ และมีได้มากกว่าหนึ่งค่า การหาค่าของ string ทำได้โดยหาค่าของนิพจน์เหล่านั้นแล้วแปลงมันให้เป็น string เสียก่อนจึงจับรวมกับ string ที่แวดล้อม การใช้สัญลักษณ์ $ เพื่อทำการหาค่าของ string เริ่มมีใน C#6 แต่การให้กำหนดลำดับได้ทั้ง [email protected]"..." และ @$"..." เพิ่งจะเริ่มมีใน C#8

ภาษา C# เร็วกว่า ภาษา JAVA
จากการทดสอบโดยใช้โปรแกรมวัดความเร็ว (benchmark) พบว่า application ที่พัฒนาด้วยภาษา C# มีประสิทธิภาพสูงกว่า application เดียวกันที่ถูกพัฒนาโดยใช้ภาษา Java การวัดความเร็วของตัวภาษาเองล้วน ๆ เป็นสิ่งไม่มีความหมาย เพราะเหมือนกับพูดว่าภาษาไทยหรือภาษาอังกฤษอันไหนเร็วกว่ากัน แต่การวัดความเร็วของapplication ที่ถูกพัฒนาด้วยภาษาใดภาษาหนึ่งเปรียบเทียบกันสามารถทำได้ ผลลัพธ์ที่ได้จะส่อให้เห็นประสิทธิภาพของตัวแปลภาษาและ runtime ของภาษานั้น ๆ

มีอะไรใหม่ใน .NET Core 3 และ C# 8 : Read only member
ใน C# version ก่อนหน้านี้จะใส่ตัวเปลี่ยนแปลงเพิ่มขยายลักษณะ readonly ให้แก่สมาชิกแบบ methodของ struct ไม่ได้ จำต้องใส่ไว้ที่ส่วนประกาศของ struct ซึ่งมีความละเอียดน้อยกว่า ดังนั้น บทความนี้จะกล่าวถึง สมาชิกแบบอ่านได้เท่านั้น