建一个设计网站要多少钱,基于wordpress多商户,美妆网站建设环境分析,各种大型网站前言在以前的文章中#xff0c;我们介绍过record类型#xff0c;它具有不变性(《为什么应该用record来定义DTO》)和值相等性(《为什么应该用record来定义DTO#xff08;续#xff09;》)。record是引用类型。而在.NET 6中#xff0c;我们可以使用record struct定义值类型。… 前言在以前的文章中我们介绍过record类型它具有不变性(《为什么应该用record来定义DTO》)和值相等性(《为什么应该用record来定义DTO续》)。record是引用类型。而在.NET 6中我们可以使用record struct定义值类型。Demo1.不变性定义record structure的代码非常简单如下所示public record struct User(int Id, string Name);但是需要注意的是和record不一样record struct生成的类型是不具备不变性的通过反编译可以看到最后生成的其实就是结构struct类型而且每个属性都有set方法如果要让类型具有不变性需要在定义时设置readonly关键字public readonly record struct User(int Id, string Name);与record一样同样可以用with表达式修改指定属性创建对象的副本2.值相等性因为record struct实际是一个结构类型而结构是一种值类型所以可以使用Equals方法进行值比较具有有相同值的两个结构将返回true:public struct User
{public int Id;public string Name;
}但是普通的结构没有实现和!运算符所以不能用这些运算符比较两个结构。但是可以在record struct上使用这些运算符进行比较结论为了便于区分可以分别用record class和record struct进行定义public record class UserClass(int Id, string Name);
public record struct UserStruct(int Id, string Name);如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“