假设您只有不可变类型,并且您的所有代码都是最新的C#7.3,并且您的方法正在使用in关键字进行输入
为什么你会使用类而不是readonly结构?
使用结构的缺点是复制是昂贵的,但假设您阻止任何副本(防御性编译器副本或由代码表示),readonly结构允许您只复制引用(如类所做)并避免堆分配和对垃圾的压力集电极.
排除特殊情况(我猜它可能是一个非常大的对象,不适合堆栈)你会使用readonly struct作为首选吗?
我感兴趣的案例是它们被用作数据容器的地方.
Mar*_*ell 42
结构不应该被视为"廉价物品"; 它们具有相似的特征集,这些特征集在某些区域中重叠并且在其他区域中不相交.例如:
Foo不能包含a Foo) - 还有其他模式另外,请注意,直到最近("ref return"和"ref locals"),很难实现"readonly结构允许你只复制引用"的某些部分; 现在这简单得多了.
但坦率地说,在大多数情况下,POCO 更容易使用,并且适用于大多数应用程序代码方案.
当然,结构是一个惊人的选择.它不是每次都有.但是,我会支持这样一种观念,即如果你打算使用a struct,它应该是readonly struct(默认情况下)或者ref struct(如果你知道你为什么要这样做); 可变的非ref结构是疼痛的一种方法.
| 归档时间: |
|
| 查看次数: |
2642 次 |
| 最近记录: |