• 2018-3-4-dotnet-设计规范-·-结构体定义


    title author date CreateTime categories
    dotnet 设计规范 · 结构体定义
    lindexi
    2018-03-04 17:48:44 +0800
    2018-2-13 17:23:3 +0800
    设计规范 规范

    X 不要给结构体默认构造函数

    默认的C#编译器也不让开发者定义有默认构造的结构体

    X 不要定义易变的属性

    易变的属性指的是在调用属性返回值的时候返回的是新的实例,易变的属性会有很多的问题。

    ✓ 需要确定数据的状态,定义为 0、false、null 是正确的

    防止开发者不从构造函数进行赋值

    ✓ 建议结构体继承 System.IEquatable

    因为默认的比较使用的是引用比较,而结构体在使用经常会被复制,如果一个复制的结构体和原来的比较,一般开发者会认为返回是相等。所以需要重写判断。而且重写 IEquatable 可以减少装箱和拆箱。

    X 不要扩展 System.ValueType ,实际上大多数语言都阻止自定义,因为系统的类型有编译支持

    结构体只能用在很小、很轻、而且不易变的属性,并且很少发生装箱的业务。

    注:不易变的另一个解释,请看 Point 类,不能对这个类的属性进行更改。

    补充:

    所有的字段都禁止公开,如果结构体的定义是字段公开,请不要公开这个结构体。

    一般结构体的定义都是公开属性,但是一些和 COM 传输的结构体就需要定义为字段

    参见:docs/struct.md at master · dotnet/docs

  • 相关阅读:
    初识函数作业
    HTTP协议那些事儿(Web开发补充知识点)
    文件操作
    文件操作作业
    深浅拷贝
    深浅拷贝作业
    小数据池 is和== 再谈编码
    小数据池/is和==/再谈编码作业
    如何用好 github 中的 watch、star、fork
    Navicat Premium Mac 12 破解(亲测可用!!!)
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085968.html
Copyright © 2020-2023  润新知