欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# Record關鍵字示例詳解

 更新時間:2025年01月03日 09:52:28   作者:ou.cs  
C#9.0引入record關鍵字,用于定義不可變且專注于數(shù)據(jù)表示的記錄類型,記錄類型自動生成構造函數(shù)、ToString、Equals和GetHashCode方法,并支持不可變性和可變性,適用于數(shù)據(jù)傳輸對象、不可變數(shù)據(jù)結構和配置對象等場景,本文介紹C# Record關鍵字,感興趣的朋友一起看看吧

在 C# 9.0 中引入了 record 關鍵字,用于定義記錄類型(Record Types)。記錄類型是一種輕量級的數(shù)據(jù)載體,專注于表示數(shù)據(jù),它提供了內置的相等性比較、生成屬性和方法等功能,使得編寫數(shù)據(jù)類更加簡潔和高效。

基本概念

  • 不可變性:記錄類型默認是不可變的,這意味著它們的屬性是只讀的,不能被修改。
  • 相等性:記錄類型根據(jù)其值進行相等比較,而不是引用比較。
  • 自動化成員:記錄類型可以自動生成構造函數(shù)、屬性、ToString、EqualsGetHashCode 方法。

聲明記錄類型

記錄類型的聲明非常簡潔,基本語法如下:

public record Person(string FirstName, string LastName, int Age);

這會生成一個包含 FirstName、LastNameAge 屬性的記錄類型,并自動提供構造函數(shù)、ToString、EqualsGetHashCode 方法。

不可變性和可變性

不可變記錄:默認情況下,記錄類型是不可變的,屬性是只讀的。例如:

public record Person(string FirstName, string LastName, int Age);

可變記錄:可以通過在記錄類型后添加 with 關鍵字來創(chuàng)建可變記錄,允許修改屬性。例如:

public record Person(string FirstName, string LastName, int Age) with;

構造函數(shù)和初始化

記錄類型自動生成構造函數(shù),可以直接通過屬性初始化:

var person = new Person("John", "Doe", 30);

相等性比較

記錄類型根據(jù)值進行相等比較:

var person1 = new Person("John", "Doe", 30);
var person2 = new Person("John", "Doe", 30);
Console.WriteLine(person1 == person2); // 輸出: True

自定義方法和成員

可以在記錄類型中添加自定義方法和成員:

public record Person(string FirstName, string LastName, int Age)
{
    public string FullName => $"{FirstName} {LastName}";
}

屬性訪問器

默認情況下,記錄類型的屬性是只讀的。如果需要自定義屬性行為,可以顯式定義屬性:

public record Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
    public int Age { get; init; }
}

使用 init 訪問器可以在初始化對象時設置值,但之后不能修改。

繼承和派生

記錄類型可以繼承其他記錄類型,派生記錄類型會繼承基記錄類型的屬性和方法。

public record Person(string FirstName, string LastName, int Age);
public record Employee(string FirstName, string LastName, int Age, string EmployeeId) : Person(FirstName, LastName, Age);

使用場景

  • 數(shù)據(jù)傳輸對象(DTO):記錄類型非常適合用來表示數(shù)據(jù)傳輸對象,因為它們專注于數(shù)據(jù)的表示和傳輸。
  • 不可變數(shù)據(jù)結構:在需要不可變數(shù)據(jù)的情況下,記錄類型提供了方便的不可變性支持。
  • 配置對象:記錄類型可以用來表示應用程序的配置選項,因為它們易于創(chuàng)建和比較。

示例代碼

public record Person(string FirstName, string LastName, int Age)
{
    public string FullName => $"{FirstName} {LastName}";
}
class Program
{
    static void Main()
    {
        var person1 = new Person("John", "Doe", 30);
        var person2 = new Person("John", "Doe", 30);
        var person3 = new Person("Jane", "Doe", 25);
        Console.WriteLine(person1 == person2); // True
        Console.WriteLine(person1 == person3); // False
        Console.WriteLine(person1.FullName); // John Doe
    }
}

到此這篇關于C# Record關鍵字的文章就介紹到這了,更多相關C# Record關鍵字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論