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" };
     
  • 相关阅读:
    C#多线程编程实战(一):线程基础
    查找算法之顺序查找
    设计模式01 创建型模式
    查找算法之二分查找
    设计模式01 创建型模式
    每天学一个,设计模式概要
    设计模式 01
    汽车电子传感器科普:激光雷达 毫米波雷达 超声波雷达
    C 如何判断编译器是否支持C90 C99?
    Node.js之EventEmiter
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/15784867.html
Copyright © 2011-2022 走看看