网站不备案可以吗,公司官网源码下载,windows iis运行php网站,php网站开发示例在 C# 中#xff0c;record 和 class 是两种不同的类型。以下是它们之间的一些区别#xff1a;
不可变性#xff1a;record 是不可变的#xff0c;一旦创建就不能修改其属性的值#xff1b;而 class 是可变的#xff0c;可以随时修改其属性的值。
record Person
{publi…在 C# 中record 和 class 是两种不同的类型。以下是它们之间的一些区别
不可变性record 是不可变的一旦创建就不能修改其属性的值而 class 是可变的可以随时修改其属性的值。
record Person
{public string Name { get; init; }//设置成set可以修改public int Age { get; init; }
}class Person
{public string Name { get; set; }public int Age { get; set; }
}值语义 vs 引用语义使用 record 声明的类型是值类型它们在比较时会比较其属性值而 class 声明的类型是引用类型它们在比较时比较的是引用地址。
var person1 new Person { Name Alice, Age 30 };
var person2 new Person { Name Alice, Age 30 };
var person3 person1;bool isEqual1 person1 person2; // false
bool isEqual2 person1 person3; // true衍生性record 类型默认是密封的即不能被继承而 class 可以被继承。
record Person
{public string Name { get; init; }public int Age { get; init; }
}class Person
{public string Name { get; set; }public int Age { get; set; }
}class Employee : Person // 合法
{public string Department { get; set; }
}默认行为record 类型会自动生成适当的 Equals、GetHashCode 和 ToString 方法而 class 需要手动实现这些方法。
record Person
{public string Name { get; init; }public int Age { get; init; }
}class Person
{public string Name { get; set; }public int Age { get; set; }public override bool Equals(object obj){// 实现自定义的相等性比较逻辑}public override int GetHashCode(){// 实现自定义的哈希码生成逻辑}public override string ToString(){// 实现自定义的字符串表示形式}
}总的来说record 主要用于表示不可变的数据实体提供了更多默认行为而 class 主要用于表示可变的对象可以被继承和自定义。