在C# 9中引入了新的record類型,它是一種不可變的數據類型,用于表示具有一組相關屬性的值。record類型的創建和使用非常簡單,下面是一些常見的用法:
public record Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
上面的代碼定義了一個名為Person的record類型,該類型有兩個只讀屬性FirstName和LastName。
Person person = new Person { FirstName = "John", LastName = "Doe" };
上面的代碼創建了一個Person對象,并為其屬性指定了初始值。
Console.WriteLine(person.FirstName); // 輸出:John
Console.WriteLine(person.LastName); // 輸出:Doe
上面的代碼通過屬性訪問符"."來訪問record對象的屬性。
Person person1 = new Person { FirstName = "John", LastName = "Doe" };
Person person2 = new Person { FirstName = "John", LastName = "Doe" };
Console.WriteLine(person1 == person2); // 輸出:True
上面的代碼使用"=="運算符比較兩個record對象的值是否相等,record類型會自動實現值比較的邏輯。
Person updatedPerson = person with { FirstName = "Jane" };
上面的代碼通過使用with表達式更新record對象的屬性,該操作會返回一個新的record對象。
需要注意的是,record類型是不可變的,即一旦創建就不能修改其屬性的值。如果需要更新屬性值,必須使用with表達式來創建一個新的record對象。這種特性使record類型更適合表示不可變的數據,例如DTO(數據傳輸對象)和領域模型等。