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" };
     
  • 相关阅读:
    四、django rest_framework源码之频率控制剖析
    Ubuntu14.04配置记录
    尝试开始写博客
    用IDEA把SpringBoot项目打成jar发布项目
    IDEA创建springboot项目部署到远程Docker
    springboot 快速部署
    最详细的 Spring Boot 多模块开发与排坑指南
    SpringMVC的工作原理
    Dubbo最详解
    Zookeeper入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/15784867.html
Copyright © 2011-2022 走看看