c#中record的用法是什么

c#
小億
118
2024-01-27 18:28:06

在C# 9中引入了新的record類型,它是一種不可變的數(shù)據(jù)類型,用于表示具有一組相關(guān)屬性的值。record類型的創(chuàng)建和使用非常簡(jiǎn)單,下面是一些常見的用法:

  1. 定義record類型:
public record Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

上面的代碼定義了一個(gè)名為Person的record類型,該類型有兩個(gè)只讀屬性FirstName和LastName。

  1. 創(chuàng)建record對(duì)象:
Person person = new Person { FirstName = "John", LastName = "Doe" };

上面的代碼創(chuàng)建了一個(gè)Person對(duì)象,并為其屬性指定了初始值。

  1. 訪問record對(duì)象的屬性:
Console.WriteLine(person.FirstName); // 輸出:John
Console.WriteLine(person.LastName); // 輸出:Doe

上面的代碼通過屬性訪問符"."來訪問record對(duì)象的屬性。

  1. 比較record對(duì)象:
Person person1 = new Person { FirstName = "John", LastName = "Doe" };
Person person2 = new Person { FirstName = "John", LastName = "Doe" };

Console.WriteLine(person1 == person2); // 輸出:True

上面的代碼使用"=="運(yùn)算符比較兩個(gè)record對(duì)象的值是否相等,record類型會(huì)自動(dòng)實(shí)現(xiàn)值比較的邏輯。

  1. 更新record對(duì)象的屬性:
Person updatedPerson = person with { FirstName = "Jane" };

上面的代碼通過使用with表達(dá)式更新record對(duì)象的屬性,該操作會(huì)返回一個(gè)新的record對(duì)象。

需要注意的是,record類型是不可變的,即一旦創(chuàng)建就不能修改其屬性的值。如果需要更新屬性值,必須使用with表達(dá)式來創(chuàng)建一個(gè)新的record對(duì)象。這種特性使record類型更適合表示不可變的數(shù)據(jù),例如DTO(數(shù)據(jù)傳輸對(duì)象)和領(lǐng)域模型等。

0