亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# Record關(guān)鍵字示例詳解

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

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

基本概念

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

聲明記錄類型

記錄類型的聲明非常簡(jiǎn)潔,基本語法如下:

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

這會(huì)生成一個(gè)包含 FirstName、LastNameAge 屬性的記錄類型,并自動(dòng)提供構(gòu)造函數(shù)、ToStringEqualsGetHashCode 方法。

不可變性和可變性

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

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

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

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

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

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

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

相等性比較

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

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}";
}

屬性訪問器

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

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

使用 init 訪問器可以在初始化對(duì)象時(shí)設(shè)置值,但之后不能修改。

繼承和派生

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

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

使用場(chǎng)景

  • 數(shù)據(jù)傳輸對(duì)象(DTO):記錄類型非常適合用來表示數(shù)據(jù)傳輸對(duì)象,因?yàn)樗鼈儗W⒂跀?shù)據(jù)的表示和傳輸。
  • 不可變數(shù)據(jù)結(jié)構(gòu):在需要不可變數(shù)據(jù)的情況下,記錄類型提供了方便的不可變性支持。
  • 配置對(duì)象:記錄類型可以用來表示應(yīng)用程序的配置選項(xiàng),因?yàn)樗鼈円子趧?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
    }
}

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

相關(guān)文章

最新評(píng)論