zoukankan      html  css  js  c++  java
  • .net 6.00 —— record 类型 (TODO)

    https://www.zhihu.com/question/449756804

    作者:醉书生
    链接:https://www.zhihu.com/question/449756804/answer/2219422015
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    C# 9 引入了记录作为类的一种特殊的面向值的形式。在 C# 10 中,您还可以声明结构记录。C# 中的结构已经具有值相等性,但记录结构添加了一个==运算符和一个 的实现,以及一个基于值的实现:IEquatable<T>ToString

    public record struct Person
    {
        public string FirstName { get; init; }
        public string LastName { get; init; }
    }

    就像记录类一样,记录结构可以是“位置”的,这意味着它们有一个主构造函数,它隐式声明了与参数对应的公共成员:

    public record struct Person(string FirstName, string LastName);

    但是,与记录类不同,隐式公共成员是可变的自动实现的属性。这是因为记录结构是元组的自然成长故事。例如,如果您有一个返回类型,并且您想将其扩展为命名类型,您可以轻松声明相应的位置结构记录并维护可变语义。(string FirstName, string LastName)

    如果您想要一个具有只读属性的不可变记录,您可以声明整个记录结构readonly(就像其他结构一样):

    public readonly record struct Person(string FirstName, string LastName);

    C# 10 不仅支持with记录结构的表达式,还支持所有结构以及匿名类型的表达式:

    var updatedPerson = person with { FirstName = "Mary" };
     
  • 相关阅读:
    lucene中创建索引库
    商城后台上架商品列表查询的书写全过程
    Linux命令英文全称
    商品品牌分页、过滤、排序查询的完成流程
    axios使用步骤详解(附代码)
    使用CORS处理跨域请求
    npm 是干什么的?
    Mybatis通用Mapper介绍和使用
    FastDFS的理解和分析
    CDN服务的含义
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/15784867.html
Copyright © 2011-2022 走看看