dotnet 设计规范 · 结构体定义
结构 定义 dotnet 设计规范
2023-09-27 14:28:55 时间
X 不要给结构体默认构造函数
默认的C#编译器也不让开发者定义有默认构造的结构体
X 不要定义易变的属性
易变的属性指的是在调用属性返回值的时候返回的是新的实例,易变的属性会有很多的问题。
✓ 需要确定数据的状态,定义为 0、false、null 是正确的
防止开发者不从构造函数进行赋值
✓ 建议结构体继承 System.IEquatable
因为默认的比较使用的是引用比较,而结构体在使用经常会被复制,如果一个复制的结构体和原来的比较,一般开发者会认为返回是相等。所以需要重写判断。而且重写 IEquatable 可以减少装箱和拆箱。
X 不要扩展 System.ValueType ,实际上大多数语言都阻止自定义,因为系统的类型有编译支持
结构体只能用在很小、很轻、而且不易变的属性,并且很少发生装箱的业务。
注:不易变的另一个解释,请看 Point 类,不能对这个类的属性进行更改。
补充:
所有的字段都禁止公开,如果结构体的定义是字段公开,请不要公开这个结构体。
一般结构体的定义都是公开属性,但是一些和 COM 传输的结构体就需要定义为字段
参见:docs/struct.md at master · dotnet/docs
我搭建了自己的博客 https://lindexi.gitee.io/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入
相关文章
- 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程
- 结构体指针变量的定义
- Delphi中record结构体定义发送接收传递使用
- 卷积网络的结构
- 淘东电商项目(02) - 项目结构初定
- 《CUDA高性能并行计算》----0.5 本书的组织结构
- c语言结构体字节对齐详解
- 树状结构查找爹们
- Golang Json文件解析为结构体工具-json2go
- 结构洞思维:让你的人际关系网络更有效力
- 泛型:基于类型组合的算法和结构构建---数据结构与算法
- iOS动画的逻辑结构:动画的定义--动画是采用连续播放静止图像的方法产生物体运动的效果。
- Linux 文件目录结构
- 《OpenGL ES应用开发实践指南:Android卷》—— 2.3 定义空气曲棍球桌子的结构
- 3D相机技术调研(飞行时间TOF+双目+结构光)
- 汇编语言的程序设计方法(循环结构和分支结构)
- 【八天学好Linux】第一天 Linux的目录结构与文件类型
- 软件测试管理与组织结构
- C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例
- 《C#零基础入门之百识百例》(六十一)结构体的定义 -- 时间设计
- pthread_t定义结构
- 结构体中的位结构
- 自引用结构--之链表指定位置添加元素
- c中结构体的4种定义