รวมฟีเจอร์ใหม่ C# 10 ลดโค้ดที่ไม่จำเป็น ควบคุมออปเจกต์และสตริงได้มากขึ้น

by lew
9 November 2021 - 04:46

เมื่อคืนนี้ไมโครซอฟท์ปล่อย .NET 6 ตัวจริง โดยส่วนสำคัญส่วนหนึ่งคือตัวภาษา C# ที่ปรับเป็นเวอร์ชั่น 10 ที่มีการปรับปรุงภาษาหลายส่วน ฟีเจอร์สำคัญๆ ที่ปรับเปลี่ยนมาได้แก่

  • ประกาศ using แบบ global: แทนที่จะประกาศใช้ namespace ทุกไฟล์ สามารถประกาศครั้งเดียวทั้งโครงการได้
  • ใช้ namespace อัตโนมัติ (implicit using): สามารถคอนฟิกแต่ละโปรเจคให้เพิ่ม namespace อัตโนมัติได้เอง
  • ประกาศ namespace ทั้งไฟล์: ในกรณีที่ทั้งไฟล์มี namespace เดียว สามารถประกาศ namespace แบบเดียวกับ using ทำให้ไม่ต้องวางโค้ดในปีกกาลงไปอีกชั้น
  • คาดเดาชนิดตัวแปรอัตโนมัติ: หากข้อมูลเพียงพอให้คอมไฟล์เลอร์ทำนายชนิดตัวแปรที่ฟังก์ชั่น lambda คืนค่าอัตโนมัติ ในเวอร์ชั่นนี้โปรแกรมเมอร์ไม่ต้องระบุชนิดตัวแปรที่จะคืนค่าแล้ว
  • รองรับ attribute กับ lambda: สามารถใช้ attribute กับ lambda ได้แบบเดียวกับฟัง์ชั่นปกติ
  • constructor แบบไม่มีพารามิเตอร์สำหรับ struct: เดิม C# หากสร้าง struct โดยไม่มีพารามิเตอร์ ฟิลด์ต่างๆ จะถูกกำหนดเป็นค่าเริ่มต้นเองโดยไม่สามารถแก้ไขได้ แต่ในเวอร์ชั่นนี้จะสามารถเขียน constructor แบบไม่มีพารามิเตอร์ได้เองแล้ว
  • record struct: จาก C# 9 ที่เพิ่ม record classses สำหรับการเปรียบเทียบค่ากัน (value-based equality) ในเวอร์ชั่นนี้สามารถประกาศแบบ struct ได้ด้วย
  • ควบคุมการเติมค่าในสตริง (interpolarted string): การใช้สตริงที่มีตัวแปรต้องแทนค่าไปภายใน เช่น $"Hello {args[0]}, how are you?" เดิมคอมไพล์เลอร์จะเป็นผู้แปลงโค้ดให้เรียกฟังก์ชั่น string.Format เอง ซึ่งบางกรณีการแทนค่าในสตริงนั้นเปลืองซีพียู และไม่จำเป็นเสมอไป (เช่น การเรียกฟังก์ชั่นดีบั๊ก) ใน C# 10 จะเปิดให้ฟังก์ชั่นควบคุมการแทนค่าในสตริงได้

สำหรับการเปลี่ยนแปลงทั้งหมดอ่านได้ในเอกสาร C# ของไมโครซอฟท์

ที่มา - Microsoft Dev Blog

Blognone Jobs Premium