C# 9 中新加入的关键词 init,record,with

为了更好地阐述C#9中的三个新概念,init, record, with,我将分别进行介绍。

init

init修饰符是C#9中一项很有用的新功能,它可以用于定义只能在创建时被修改的变量或属性。使用init修饰符的目的是减少意外修改属性值的情况,例如在构造函数之后不期望修改属性值,这样会增加数据不一致性的风险。以下是一段演示如何使用init修饰符的代码:

public class Person
{
    public int Id { get; init; }
    public string Name { get; init; }
}

Person person = new()
{
    Id = 1,
    Name = "Alice"
};

在上面的代码中,IdName属性被标记为init,这意味着在创建Person对象时可以进行初始化,但初始化后就不允许再修改它们的值了。

record

C#9中的record概念提供了一种简单且高效的方法来创建只有数据的类,同时结合了类和结构体的优点。定义 record 的方式类似于定义类,在类名后添加 record 关键字即可定义成 record 。以下是一个演示如何使用record关键字创建记录类的代码:

public record Dog(string Breed, int Age);

Dog dog1 = new("border collie", 3);
Dog dog2 = new("labrador", 2);

在上面的代码中,我们使用record定义了一个名为Dog的记录类型,它只有两个属性,分别是BreedAge。当我们使用new运算符创建新的Dog对象时,我们可以直接传递实参。

with

with是C#9中一个非常实用的新概念,它可以用来创建一个新对象的副本,但其中的某些属性值可能会被修改。以下是一个演示如何使用with关键字的示例:

var dog = new Dog("bulldog", 4);
var dog2 = dog with { Age = 5 };

在上面的代码中,我们通过将with关键字用于dog对象来创建一个新的dog2对象,同时将Age属性的值修改为5

综上所述,这就是关于C#9中新加入的三个关键词initrecordwith的完整攻略。希望上述内容能够帮助大家更好地理解这些新概念,并为C#程序员提供更多便利。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 9 中新加入的关键词 init,record,with - Python技术站

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

相关文章

  • c#正反序列化XML文件示例(xml序列化)

    下面请认真阅读以下完整攻略。 c#正反序列化XML文件示例(xml序列化) 什么是XML序列化? XML序列化是一种将对象统一保存为XML格式并在需要时将XML信息还原成对象的技术。在C#中,可以使用System.Xml.Serialization命名空间中的类来实现XML序列化和反序列化。 XML序列化的基本过程 1. 定义要序列化的对象 在C#中,需要将…

    C# 2023年5月15日
    00
  • 关于C#线程的全面解析

    关于C#线程的全面解析 C#是一种具备多线程编程能力的语言,线程是一种执行路径,一个进程可以由多个线程组成,每个线程有自己的代码执行序列,独立地运行于相同的内存地址空间中。 线程的创建与调度 C#中线程的创建有多种方式,包括: Thread类:通过构造Thread对象来创建线程。 ThreadPool:使用线程池来管理和调度线程。 Task类:利用Task类…

    C# 2023年5月15日
    00
  • Fastjson 常用API介绍及下载地址(推荐)

    Fastjson 常用 API 介绍及下载地址(推荐) 介绍 Fastjson是一个Java语言编写的高性能JSON处理器,它可以将Java对象转换为JSON,也可以将JSON转换为Java对象,并且速度非常快,被广泛应用于各种Java Web应用中。Fastjson的优势在于比其他的json处理器更快。 下载地址 Fastjson的下载地址:https:/…

    C# 2023年5月31日
    00
  • .NET 6 整合 Autofac 依赖注入容器

    前言 一行业务代码还没写,框架代码一大堆,不利于学习。常看到java的学习资料或博客,标题一般为《SpringBoot 整合 XXX》,所以仿照着写了《.NET 6 整合 Autofac 依赖注入容器》这样一个标题。以下是我自己的用法,可能不是最佳实践。 一. 引用包 NuGet搜索并安装:AutofacAutofac.Extensions.Dependen…

    C# 2023年5月3日
    00
  • RandomId生成随机字符串详解实例

    RandomId生成随机字符串详解实例 介绍 在软件开发中,为了满足不同的需求,我们经常需要生成随机字符串进行使用。本篇文章将介绍RandomId生成随机字符串的详细过程,以及具体的示例说明。 准备工作 在使用RandomId生成随机字符串之前,需要在项目中引入RandomId的相关代码。可以使用以下语句进行安装: npm install randomid …

    C# 2023年6月7日
    00
  • Unity3D UGUI特效之Image高斯模糊效果

    下面我将详细讲解“Unity3D UGUI特效之Image高斯模糊效果”的完整攻略。 1. 什么是高斯模糊? 高斯模糊是一种图像处理算法,是对图像进行模糊处理的一种方法,模糊程度随着处理程度的加深而不断加深,可以在一定程度上使图像变得更加柔和,视觉效果更加温和自然。 2. Unity3D中实现高斯模糊的方法:Shader实现 在Unity3D中,我们可以通过…

    C# 2023年6月3日
    00
  • C#如何用ThoughtWorks生成二维码

    生成二维码可以使用ThoughtWorks开源的ZXing库。以下是使用C#利用ThoughtWorks生成二维码的完整攻略: 步骤一:引入依赖 使用ZXing生成二维码需要引入ThoughtWorks.QRCode的Nuget包。在Visual Studio中,可以通过在“解决方案资源管理器”中右键点击项目,选择“管理NuGet程序包”来搜索并安装Thou…

    C# 2023年6月6日
    00
  • C#实现学生模块的增删改查

    C#是一种常用的面向对象编程语言,非常适合实现学生模块的增删改查功能。下面是该功能的完整攻略: 步骤一:设计数据库 在实现学生模块之前,你需要先设计好相应的数据库。数据库中至少需要包含学生的姓名、性别、年龄和学号这4个关键信息。你可以使用SQL Server、MySQL或者SQLite等数据库管理系统。 步骤二:连接数据库 使用C#中的ADO.NET技术连接…

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