浅谈C# 9.0 新特性之只读属性和记录

当然,我很愿意为您讲解“浅谈C#9.0新特性之只读属性和记录”的完整攻略。下面是详细的解释。

什么是C# 9.0?

C# 是一种由微软推出的面向对象编程语言,其 9.0 版本于 2020 年 11 月发布。C# 9.0 带来了许多新特性和语言改进,使得编写高效、可维护的代码更加容易。

只读属性

只读属性是指,一旦属性被初始化之后,就不能再次赋值。在 C# 9.0 中,只读属性可以使用 关键字 init 来定义。init 代码块只能在属性的初始化器中被使用,也就是在构造函数中执行。

下面是一个示例代码:

public class MyClass {
    public int MyProperty { get; init; }
}

...
MyClass obj = new MyClass() { MyProperty = 10 };

在上面的代码中,我们定义了一个名为 MyProperty 的只读属性,并使用 init 关键字来修饰。在实例化对象时,我们为 MyProperty 属性进行了初始化。需要注意的是,一旦 MyProperty 属性被初始化之后,就不能再次修改其值。

记录

记述是一个新的 C# 9.0 类型,用于存储一组相关数据。这种类型类似于结构体,但它更加灵活,可以包含属性和方法。与普通的类不同,记录是值类型。其基础上有三种类型:记录、记录结构和只读记录。

下面是一个示例代码:

public record Car(string Make, string Model, int Year);

...
// 创建并初始化一条记录
Car myCar = new Car("Toyota", "Camry", 2021);
// 访问记录的属性
Console.WriteLine("Make: " + myCar.Make);  // 输出 "Make: Toyota"

在上面的代码中,我们定义了一个名为 Car 的记录,用于存储汽车的相关信息。我们可以使用带有构造函数的语法来创建一个记录。在实例化 Car 对象时,需要提供 MakeModelYear 属性的初始值。创建记录之后,我们可以像使用常规类型一样访问其属性。

额外说明

需要注意的是,在使用上述特性时,需要在语言版本上将项目升级为 C# 9.0。为此,我们需要在项目文件中添加以下代码:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
    <LangVersion>9.0</LangVersion>
  </PropertyGroup>
</Project>

在上面的代码中,我们将 LangVersion 版本更新为 9.0,以便使用 C# 9.0 中的新功能。

希望上述信息能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C# 9.0 新特性之只读属性和记录 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • winform基于异步委托实现多线程摇奖器

    下面我会详细讲解如何使用异步委托实现winform的多线程摇奖器。 1. 理解异步委托 异步委托是一种多线程编程技术,适用于需要执行耗时操作而不阻塞主线程的情况。在winform中,我们可以使用异步委托来实现多线程的UI操作,比如在后台计算数据、读取文件等操作时,同时不会阻塞用户界面的响应。 在异步委托中,我们可以使用C#语言中提供的BeginInvoke和…

    C# 2023年6月7日
    00
  • 为何Linq的Distinct实在是不给力

    首先,我们需要了解什么是 Linq 中的 Distinct 方法。该方法用于从序列中提取不同的元素,即去除重复项。但是,我们在使用 Distinct 方法时需要注意以下几点: 1. Distinct 方法需要实现 IEquatable 接口 默认情况下,Distinct 方法会使用对象的 Equals 方法来判断两个对象是否相同。如果使用的对象没有实现 IE…

    C# 2023年6月1日
    00
  • C#从控制台读取字符串的方法

    接下来我将详细讲解“C#从控制台读取字符串的方法”。 什么是控制台? 控制台是计算机的一个系统软件,是一种在电脑上进行字符用户界面操作的应用程序,小巧、直观、灵活,是程序员和IT技术人员日常使用的一个工具。在Windows系统上,通过Win+R打开运行窗口,然后输入“cmd”就能打开控制台。 C#中如何从控制台读取字符串? 在C#中,我们可以使用Consol…

    C# 2023年6月8日
    00
  • 利用Timer在ASP.NET中实现计划任务的方法

    利用Timer在ASP.NET中实现计划任务的方法可以分为以下几个步骤: 在ASP.NET项目中安装System.Timers包。可以通过NuGet包管理器来安装,也可以手动添加引用。 在ASP.NET项目中创建一个类,可以命名为Tasks或者TaskScheduler,该类需要继承System.Timers.Timer类,并实现定时执行的代码。具体实现可以…

    C# 2023年6月6日
    00
  • C#自定义DataGridViewColumn显示TreeView

    下面是详细讲解“C#自定义DataGridViewColumn显示TreeView”的完整攻略: 1. 实现自定义DataGridViewColumn 首先,我们需要实现一个自定义的DataGridViewColumn类来支持TreeView的显示和编辑。 public class DataGridViewTreeViewColumn : DataGridV…

    C# 2023年5月15日
    00
  • asp.net(c#) MS AJAX的安装

    下面是asp.net(c#)MSAJAX的安装攻略: 1. 安装前的准备 在安装MSAJAX之前,需要确保你已安装Visual Studio和.NET Framework。检查你的系统是否已经安装.NET Framework 2.0和4.0以上的版本,否则需要先安装它们。 2. 下载MSAJAX 可以从Microsoft的官网下载MSAJAX,地址为:htt…

    C# 2023年5月15日
    00
  • .net中下载文件的实例代码

    下面是“.NET中下载文件的实例代码”的完整攻略: 1. 使用WebClient类下载文件 WebClient类提供了一个简单的方法来从远程服务器下载文件。以下是示例代码: using System.Net; public void DownloadFile(string remoteUrl, string localPath) { using (var c…

    C# 2023年5月31日
    00
  • C# 如何实现一个带通知的List

    实现一个带通知的List需要使用C#的事件机制。当List中的数据发生变化时,我们需要通知事件的订阅者。下面是完整攻略和两个示例说明: 1. 定义类 我们需要定义一个新的类来扩展List,在这个新类中,我们将使用C#的事件机制来实现通知功能。下面是示例代码: using System; using System.Collections.Generic; na…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部