Init-only là feature được thêm vào C# 9.0. Vậy tác dụng của nó là gì? Trước hết chúng ta cần hiểu khái niệm mutable và immutable Mutable nghĩa là “can change” – có thể thay đổi. Một đối tượng sau khi được tạo, data member có thể được thay đổi. Immutable nghĩa là “can’t change” – không thể thay đổi. Data member không thể thay đổi giá trị sau khi đối tượng được tạo ra. VD: string là immutable type. Mỗi khi bạn gán giá trị, biến string sẽ được khởi tạo mới. String Builder được dùng đại diện cho kiểu dữ liệu string có thể thay đổi được. Giả sử bạn có kiểu dữ liệu Member với 3 properties (Id, Name, Address). Làm sao để Id là kiểu Immutable type. Xử lý dữ liệu kiểu truyền thống Tạo class Member với 3 thuộc tính sau: public class Member { public int Id { get; set; } public string Name { get; set; } public string Address { get; set; } } Dưới đây là đoạn code gán giá trị var memberObj = new Member(); memberObj.Id = 1; memberObj.Name = "An Binh Trong"; memberObj.Address = ...