×

Tìm hiểu và sử dụng các tính năng mới trong C# 10+

Ngôn ngữ lập trình C# liên tục được phát triển và cải tiến qua các phiên bản, mang đến nhiều tính năng mới và mạnh mẽ nhằm tăng cường hiệu suất và tính tiện dụng cho lập trình viên. Trong phiên bản 10 trở lên, C# đã giới thiệu nhiều tính năng đáng chú ý giúp lập trình viên xây dựng ứng dụng một cách nhanh chóng và hiệu quả hơn. Dưới đây là một số tính năng mới và cách sử dụng chúng.

1. Từ khoá global using

Tính năng này cho phép bạn khai báo các using directive một lần duy nhất trong một file, và áp dụng cho toàn bộ dự án. Điều này giúp giảm thiểu việc lặp lại và làm tăng tính rõ ràng cho mã nguồn.

// File: GlobalUsings.cs
global using System;
global using System.Collections.Generic;

2. Kiểu dữ liệu Records với từ khoá with

Records đã được giới thiệu trong C# 9, nhưng trong các phiên bản mới, chúng đã được cải tiến hơn nữa với khả năng kết hợp with. Điều này tạo ra tính năng "non-destructive mutation", cho phép thay đổi giá trị của một đối tượng mà không làm thay đổi bản gốc.

public record Person(string Name, int Age);

var person1 = new Person("Alice", 30);
var person2 = person1 with { Age = 31 };

3. Khả năng lambda mạnh hơn

Lambda expressions đã được cải tiến cho phép bạn viết các biểu thức ngắn gọn và linh hoạt hơn. Chúng hiện nay có thể bao gồm các biểu thức có kiểu trả về và khai báo thuộc tính.

Func<int, int, int> add = (a, b) => a + b;

4. file-scoped namespace

Việc sử dụng namespace trên cùng một dòng với toàn bộ nội dung file giúp giảm độ lùi của mã và làm bài viết mã nguồn dễ dàng hơn.

// Trước C# 10
namespace MyNamespace {
    class MyClass {
        // Code
    }
}

// Sau C# 10
namespace MyNamespace;

class MyClass {
    // Code
}

5. Constant interpolated strings

C# 10 cho phép sử dụng các giá trị hằng (constant) trong các chuỗi có kiểu dữ liệu interpolated, giúp viết mã rõ ràng và dễ hiểu hơn.

const string name = "John";
const string greeting = $"Hello, {name}!";

6. struct với khả năng init

Phiên bản mới đã thêm khả năng cho struct có khả năng init, giúp các thuộc tính chỉ có thể được khởi tạo một lần và chống lại việc thay đổi không mong muốn sau khi đã được thiết lập.

public struct Vector
{
    public int X { get; init; }
    public int Y { get; init; }
}

var v = new Vector { X = 1, Y = 2 };
// v.X = 5; // lỗi, không thể thay đổi giá trị sau khi khởi tạo

7. Thu gọn trình bày chương trình top-level statements

C# tiếp tục hỗ trợ khả năng viết các đoạn mã top-level mà không cần khai báo lớp hoặc phương thức, hữu ích cho các đoạn mã mẫu hoặc đơn giản.

using System;

Console.WriteLine("Hello, World!");

8. Async cải tiến

Phiên bản mới đã cải tiến mạnh mẽ hơn trong việc xử lý các phương thức bất đồng bộ, giúp mã dễ hiểu và dễ duy trì hơn.

async Task ExampleAsync()
{
    await Task.Delay(1000);
    Console.WriteLine("Task Completed");
}

Những cải tiến này và nhiều tính năng khác đã làm cho C# trở thành một trong những ngôn ngữ lập trình mạnh mẽ và linh hoạt nhất hiện nay. Việc tìm hiểu và áp dụng các tính năng mới này không chỉ giúp bạn nâng cao khả năng lập trình mà còn tăng hiệu suất và tính chuyên nghiệp của các ứng dụng bạn phát triển. Hãy cố gắng cập nhật và sử dụng những tính năng mới nhất để tối ưu hoá công việc lập trình của mình.

Comments