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#环形队列的实现方法详解

    C#环形队列的实现方法详解 什么是环形队列 环形队列(Circular Queue),也叫循环队列,是一种环形存储结构,相比线性队列具有更高的效率。 在环形队列中,队列的尾部指针在达到队列的最大容量时会重新指向队列的头部,实现循环利用队列空间的效果。 环形队列的实现方法 环形队列的结构 在C#中,我们可以使用数组来实现环形队列,其结构如下: public c…

    C# 2023年6月7日
    00
  • Unity3D使用鼠标旋转缩放平移视角

    让我为您详细讲解一下“Unity3D使用鼠标旋转缩放平移视角”的完整攻略。 1.概述 在Unity3D中,使用鼠标旋转、缩放、平移视角,是非常常见和实用的操作。这种交互方式,有很多常见的应用场景,比如第三人称视角、自由视角、场景漫游、3D地图等等。在这篇攻略中,我将分享三种不同的示例,让您了解如何实现这些常见的交互操作。 2.鼠标旋转视角 以下是Unity3…

    C# 2023年6月3日
    00
  • C# StringBuilder.Insert()方法: 在 StringBuilder 对象的指定位置插入一个字符串

    StringBuilder.Insert() 方法用于在指定索引位置插入指定的字符串或字符。它的语法如下: public StringBuilder Insert(int index, string value); public StringBuilder Insert(int index, char value); 其中,第一个参数 index 表示要在哪…

    C# 2023年4月19日
    00
  • Python 图片转数组,二进制互转操作

    让我们来详细讲解一下 “Python 图片转数组, 二进制互转操作” 的攻略。 什么是图片转数组? 在 Python 中,我们通常会将一幅图片转换为数组来进行进一步的处理,比如图像的特征提取、模式识别、人脸识别等。将一张图片转换为数组,我们可以获取每个像素点的 RGB 值、灰度值等信息,从而对图片进行更精细的操作。 图片转数组的操作步骤: 首先,我们需要用 …

    C# 2023年6月7日
    00
  • C#判断字符串是否是数字(实例)

    下面是关于“C#判断字符串是否是数字(实例)”的详细攻略。 标题 问题描述 如何在C#中判断一个字符串是否是数字? 解决方案 C#中判断字符串是否是数字,常用的有以下三种方法: 使用double.TryParse()方法 使用int.TryParse()方法 使用正则表达式 下面我们将详细介绍这三种方法。 方法一:使用double.TryParse()方法 …

    C# 2023年6月8日
    00
  • C#语法相比其它语言比较独特的地方(一)

    下面详细讲解一下“C#语法相比其它语言比较独特的地方(一)”的完整攻略。 简介 C#是一种多范式编程语言,由微软公司开发,广泛应用于Windows平台上的应用程序开发。C#语法在设计上融合了C++和Java的特点,并且具有诸多独特的语法和特性。 1、属性(Properties) C#中的属性是一种特殊的方法,用于读取或设置对象中的某个字段的值。有以下三种方式…

    C# 2023年5月31日
    00
  • C#难点逐个击破(1):ref参数传递

    下面是关于“C#难点逐个击破(1):ref参数传递”的完整攻略: 标题 C# 难点逐个击破(1): ref 参数传递 正文 在 C# 中,方法参数通常是按值传递的,也就是说,传给方法的是参数的一个副本,而不是参数本身。但是,在某些情况下,我们需要传递参数本身,而不是它的副本。这时候,我们可以使用 ref 关键字来实现。 ref 关键字的作用是将参数标记为一个…

    C# 2023年6月7日
    00
  • .NET发送邮件遇到问题及解决方法

    . 简介 在进行.NET开发时,我们会经常用到邮件发送功能。然而,在使用.NET发送邮件时,可能会遇到一些问题,例如邮件发送失败、被当作垃圾邮件等。本攻略将为大家介绍.NET发送邮件遇到的问题及解决方法。 . 常见问题及解决方法 1. 发送邮件失败 如果发送邮件失败,可以根据以下步骤来排查问题: (1) 确认SMTP服务器地址和端口号是否正确 using S…

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