浅谈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日

相关文章

  • C# DataTable中Compute方法用法集锦(数值/字符串/运算符/表等操作)

    C# DataTable中Compute方法用法集锦 DataTable的Compute方法提供了一种简便的方式,允许在DataTable中进行多种类型的计算。本文主要介绍该方法的用法集锦,包括数值计算、字符串操作、运算符、表操作以及自定义函数等方面的操作。 数值计算 Compute方法可以对包含数值的DataTable进行计算。以下面的表格为例,介绍相关的…

    C# 2023年5月15日
    00
  • C# Linq的Any()方法 – 确定序列中是否存在元素

    Any() 方法是 C# LINQ 中的一种用于判断集合中是否存在任何元素满足给定条件的方法。此方法的语法如下: bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); 其中,source 是需要检查的集合,pr…

    C# 2023年4月19日
    00
  • 微信开放平台之网站授权微信登录功能

    微信开放平台之网站授权微信登录功能 在网站开发中,我们常常需要用户登录鉴权功能。使用微信登录已经成为了一种非常方便且广泛应用的方式。本文将介绍如何使用微信开放平台实现网站授权微信登录功能。 1. 注册开发者账户 在 微信开放平台官网 注册一个开发者账户,创建一个新的应用。在应用的基本配置中,获取到AppID和AppSecret两个参数,它们将用于后续开发流程…

    C# 2023年5月31日
    00
  • .net项目使用日志框架log4net

    下面我将为您详细讲解“.net项目使用日志框架log4net”的完整攻略。本攻略包括以下几个部分: log4net简介 log4net的配置 log4net的使用 示例1:在控制台中输出日志 示例2:将日志信息写入数据库 1. log4net简介 log4net是一个强大的、灵活的、线程安全的日志框架。它支持多种输出方式,包括控制台、文件、数据库等。log4…

    C# 2023年6月3日
    00
  • C# WinForm程序完全退出的问题解决

    我将为您详细讲解“C# WinForm程序完全退出的问题解决”的完整攻略。 1. 问题描述 在使用 C# WinForm 开发应用程序时,通常需要实现程序完全退出的功能。但是,直接使用 this.Close() 或者 Application.Exit() 等方法退出程序时,往往会出现程序并未完全退出的问题,即程序在关闭窗口后仍然在运行,导致后续操作不能顺利进…

    C# 2023年6月7日
    00
  • 改进c# 代码的五个技巧(一)

    当我们编写C#代码时,既希望代码功能完善,也希望代码运行速度和内存占用量方面尽可能优化。在这篇文章中,我们会介绍五个技巧,可以帮助你改进C#代码的质量。 技巧一:使用StringBuilder代替String 使用String类型声明的变量在处理文本时会创建一个新的字符串对象,如果需要在原始字符串上添加字符,则需要使用连接符+。这样使用+连接字符串会导致系统…

    C# 2023年5月15日
    00
  • C#如何快速释放内存的大数组详解

    标题:C#如何快速释放内存的大数组详解 介绍:在C#编程开发中,如何高效地释放内存是一个非常实际的问题。本文主要探讨C#如何快速释放内存的大数组的方法和技巧,希望能够帮助大家更好地掌握C#编程语言。 一、使用Dispose方法释放内存 在C#编程开发中,释放内存的一种常见方式是通过使用Dispose方法。Dispose方法可以释放任何继承自IDisposab…

    C# 2023年6月6日
    00
  • ASP.NET MVC3的伪静态实现代码

    ASP.NET MVC是一种Web应用程序开发框架,它强调了分离应用程序规模、健硕性以及可扩展性及可接受性。为了增强SEO搜索引擎优化的效果,伪静态技术应运而生。下面介绍ASP.NET MVC3的伪静态技术的实现方法: 第一步:打开Global.asax.cs文件 在MVC项目中,可以打开Global.asax.cs文件。 public static voi…

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