Skip to main content
0
C#NewsProgramming Language

มาดู Top 5 Features ใหม่ใน C#10

C# นั้นมีมาตั้งแต่ปี 2002 ซึ่งในอีกไม่กี่เดือนข้างหน้านี้ก็จะครบรอบ 20 ปีของเจ้า C# แล้ว 🎉

ใกล้วันเกิดทั้งที เขาเลยมี Feature ใหม่กำลังจะเข้ามาเป็นทางการในอีกไม่ช้านี้ตัว Feature ที่มาใหม่นั้น วันนี้ผมมี Top 5 Features ใหม่ที่จะมาใน C# 10 ✨

ซึ่งจะมีอะไร Update มาใหม่บ้างนั้น ไปดูกันเลย !!!

เขียนโดย Natakorn Hongharn -BorntoDev Co., Ltd.

1. Null Parameter Checking

Null Reference Exception เป็นอีกหนึ่งอย่าง ที่เราจะเจอกันบ่อยมากใน Bug ของโปรแกรมของเรา (มันช่างน่าเจ็บปวดเหลือเกินนน 😭) การที่เราจะหลีกเลี่ยงเจ้า Exception นี้ เราต้องพยายามไล่ใส่เงื่อนไขเช็คทีละจุดให้ครบเรียบร้อย

ซึ่งเจ้า Feature ใหม่นั้น สามารถช่วยเราในจุดนี้ได้ด้วยนะ ทำให้โค้ดเราดูอ่านง่ายและไหลลื่นยิ่งขึ้น

Pain ปัจจุบันที่เราเจอกันประจำ ก็คือ การเช็คตัว Parameter ที่รับเข้ามาใน Function เพื่อหลีกเลี่ยง NULL นั่นเอง ปกติเราจะแก้ปัญหากันแบบนี้

public SomeFunction(int id, SomeClass newObject)
{
  if (newObject == null)
  {
    throw new ArgumentNullException("newObject");
  }
  ...
}

 

 

ซึ่งเราต้องคอยมานั่งจับ Throw ออกเรื่อย ๆ ถ้าตัว Parameter เป็น NULL แต่ใน Feature ใหม่นั้น เราไม่จำเป็นต้องใส่ Throw อีกต่อไป เพราะมันจะ Throw ให้อัตโนมัติถ้าหากเป็น NULL ต้องขอบอกว่า ดีสุด ๆ ไปเลย

public SomeFunction(int id, SomeClass newObject)
{
  ...
}

 

 

2. Required Properties

ในทุกวันนี้ ทุกคนส่วนมากเลือกที่จะลดการเขียนแบบ Heavy Constructors หรือบางครั้งอาจจะมีการเขียนแบบ Lightweight Constructors ซึ่งใน Update ใหม่เราสามารถ Define ค่า Properties ได้โดยตรงเลย

var newArticle = new Article
{
  Title = "Top 10 Feature in C# 10",
  Category = "BorntoDev",
  ReleaseDate = DateTime.Now()
}

 

 

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

(สร้างบทความโดยที่ไม่มีชื่อบทความ แล้วนายกำลังเขียนอะไรอยู่ห๊ะ 😂)

ด้วยตัว Feature ใหม่ จะเพิ่มตัว Keyword เข้ามาใหม่คือคำว่า “required” เมื่อเราสร้าง Class ขึ้นมา เราสามารถใส่ Property Required ลงไปได้ ถ้าหากสร้าง Class Object ใหม่แล้วไม่ใส่ Property Required ขึ้นมาล่ะก็ โค้ดของนายจะแดงขึ้นมาทันที !!

public class Article
{
  public required string Title { get; init; }
  public string Category { get; init; }
  public DateTime ReleaseDate{ get; init; }
}

 

 

3. Field Keyword

ตัว Feature ใหม่ที่จะมาอีกตัวหนึ่งก็คือ Init Accessors ทำให้ตัว Object ที่เป็นประเภทคงที่นั้นยืดหยุ่นมากขึ้น เนื่องจาก C# 10 เราไม่จำเป็นต้องมา Implement ตัว Backing Field โดยใช้แค่เพียงตัว Keyword ที่เข้ามาใหม่คือ “field” ตัวอย่างดังนี้

public class Article
{
  private string _title;
  public string Title
  {
    get
    {
      return _title;
    }
    set
    {
      if (value.Trim() == "")
        throw new ArgumentException("Title can't be empty");
 
      _title = value;
    }
  }
}

 

 

เปลี่ยนเป็น

public class Article
{
  public string Title
  {
    get;
    set
    {
      if (value.Trim() == "")
        throw new ArgumentException("Title can't be empty");
      field = value;
    }
  }
}

 

 

4. Global Usings

นี่ก็เป็นอีก 1 Feature ใหม่ที่จะทำให้เราเขียนโค้ดง่ายขึ้น อย่างที่ทุกคนรู้ว่าทุกครั้งในไฟล์ C# จะต้องมี using อยู่ด้านบนอยู่มากมาย ทำให้ส่วนบนดูรกมากและ หากมีการใช้งาน ก็ต้องคอยนำไปใส่ในทุก ๆ ไฟล์อีกด้วย

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

 

 

ซึ่งเจ้า Feature นี้จะช่วยแก้ปัญหาในจุดนี้โดยการที่เราใช้คำว่า “global” นำหน้า using ทำให้เราเพียงแค่ประกาศ using เหล่านี้ใส่สักไฟล์ใน Project ก็จะถือว่าทุกไฟล์มี using เหล่านี้หมดเลย ทำให้ไฟล์อื่น ๆ ไม่จำเป็นต้องประกาศ using เลยก็ว่าได้ (เจ๋งสุด ๆ)

global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.AspNetCore.HttpsPolicy;
global using Microsoft.AspNetCore.Identity;
global using Microsoft.AspNetCore.Identity.UI;
global using Microsoft.EntityFrameworkCore;
global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading.Tasks;

 

 

5. File Namespaces

ตัวนี้ก็ดีไม่แพ้กันเลย โดยปกติแล้วตัว File Namespaces นั้นเราต้องระบุแล้วใส่ปีกกาครอบในส่วนของ File Namespaces ด้วย

namespace Blog
{
  public class Article
  {
    ...
  }
}

 

 

แต่ใน Update ใหม่ทำให้เราไม่จำเป็นต้องใส่ปีกกาครอบอีกต่อไป เราสามารถกำหนด Namespace ใน Flie Level แบบนี้ได้ทันที

namespace Blog;
 
public class Article
{
  ...
}

 

 

และนี่ก็คือ Top 5 Features ใหม่ของ C# 10 ที่กำลังจามาในเร็ว ๆ นี้ หวังว่าข้อมูลนี้จะเป็นประโยชน์สำหรับผู้อ่านทุกคนนะครับผม 😁

**หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน

และ เทคโนโลยีของตัวเอง ?**

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

Natakorn Hongharn

Author Natakorn Hongharn

More posts by Natakorn Hongharn
Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า