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

ข้อดีของภาษา 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) สามารถกำหนดลำดับได้ทั้ง $@"..." และ @$"..." แปลกจากเวอร์ชันก่อนหน้านี้ที่เขียนได้เพียง $@"..." เท่านั้น สัญลักษณ์ $ ทำหน้าที่ระบุว่า string ที่ตามมาอาจมีการสอดแทรกค่าที่ตัวแปลภาษาจะต้องนำไปถอดความก่อนจะดำเนินการอย่างอื่นกับมันต่อไป โดยค่าดังกล่าวอาจเป็นเพียงค่าจากตัวแปรหรือซับซ้อนกว่านั้น เช่นเป็นนิพจน์ และมีได้มากกว่าหนึ่งค่า การหาค่าของ string ทำได้โดยหาค่าของนิพจน์เหล่านั้นแล้วแปลงมันให้เป็น string เสียก่อนจึงจับรวมกับ string ที่แวดล้อม การใช้สัญลักษณ์ $ เพื่อทำการหาค่าของ string เริ่มมีใน C#6 แต่การให้กำหนดลำดับได้ทั้ง $@"..." และ @$"..." เพิ่งจะเริ่มมีใน 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 ซึ่งมีความละเอียดน้อยกว่า ดังนั้น บทความนี้จะกล่าวถึง สมาชิกแบบอ่านได้เท่านั้น

กลุ่มของ .NET
Framework ของไมโครซอฟท์ที่ใช้ชื่อทางการค้าว่า .NET (ดอนเน็ต) มีหลายแบบหลายเวอร์ชั่น รวมแล้วไม่ต่ำกว่าสามสิบแบบ อย่างที่ได้เรียนให้ทราบไปแล้วในบทความ .NET Core คืออะไร แม้จะมีจำนวนมาก แต่ทั้งหมดก็อาจถูกจัดประเภทออกเป็นกลุ่มใหญ่ ๆ ได้ 4 กลุ่มคือ • .NET Framework • .NET Core • .NET Native • .NET Standard

.NET Core คืออะไร
.NET Core มีองค์ประกอบหลายส่วน อาทิ ตัว run time ชื่อ CoreCLR ซึ่งเป็นตัวrun time ที่มีทุกอย่างครบสมบูรณ์เช่นเดียวกับตัว run time CLR ใน .NET Framework ของ Windows หน้าที่ของมันคือทำตัวเป็น virtual machine เพื่อ Run และดูแลโปรแกรมที่เขียนไว้เพื่อให้ทำงานใน .NET

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : Generalized Async Return Types
คุณสมบัติ “การทำให้ค่าส่งกลับของ Async กว้างขึ้น” (Generalized Async Return Types ย่อ GART) เป็นคุณสมบัติใหม่ของภาษา C# 7.0 ที่ช่วยให้การส่งค่ากลับจาก Method แบบ Async ไม่จำเป็นต้องมีชนิดข้อมูลเป็น Object อย่างแต่ก่อน เดิมทีการส่งค่ากลับจากmethodแบบAsyncเป็นได้แค่ task, task หรือไม่ก็ void ซึ่งไม่ดีเพราะการเป็น task เป็น Reference Type การใช้งานมันจะเกิดการจองที่หน่วยความจำสำหรับ object หรือที่เรียกว่า boxing ที่เราต้องการหลีกเลี่ยงเพราะจะทำให้เกิดปัญหาคอขวด