在 C# 9 中加入了一個新語法 record,用來滿足單純傳遞資料但不希望在程式執行的中途被任意更改之需求,直接來看範例:

public record Person
{
    public string Name { get; init; } = string.Empty;
    public int Age { get; init; } = 0;
}

使用方式:

Person person1 = new Person { Name = "aaa3", Age = 18 };
person1.Age = 19;   //error

使用 record,在初始化資料後就不能更改,另外像是 Equals、GetHashCode 和 ToString 這三個 method 都會預先產生,不用自己寫,而 “==” 這個運算子也會重載,像是下列寫法:

Person person1 = new Person { Name = "aaa3", Age = 18 };
Person person2 = new Person { Name = "aaa3", Age = 18 };
Console.WriteLine(person1 == person2);  //true

另外,在 C# 10 之後,寫法可以再更簡潔一些:

public record Address(string Street, string City, string State, string Country, string ZipCode);

塞資料時照著建構子依序輸入就可以了。

參考資料