假设您只有不可变的类型
并且您拥有所有最新的C#7.3代码,并且您的方法使用<label style="display: inline;color: #545454;font-weight:100;" dataid="' +this.ID +'" data-nodeid = "' +this.NodeId +'"><input type= "checkbox" style= "display:none;" id="cb' + this.ID + '">MILK
<span for="cb' + this.ID +'" class="checkmark"></span >
</label >
关键字作为输入
为什么要使用类而不是只读结构?
使用结构的缺点是复制是昂贵的,但是假设您阻止任何复制(防御性编译器复制或由代码表示),则只读结构仅允许您复制引用(如类一样),避免堆分配和压力在垃圾收集器上。
不包括特殊情况(我猜这可能是一个非常大的对象,无法放入堆栈中),您通常将只读结构用作首选吗?
我感兴趣的情况是将它们用作数据容器。
答案 0 :(得分:38)
结构不应被视为“廉价对象”;它们具有相似的功能集,在某些区域中重叠而在其他区域中不相交。例如:
Foo
不能包含Foo
(如果它是结构))-还有其他此外,请注意,直到最近(“ ref返回”和“ ref当地”),要实现“只读结构只允许您复制参考”的某些部分,还是非常困难的。现在,这要简单得多。
但是坦率地说,在大多数情况下,POCO都很容易使用,对于大多数应用程序代码情况也很合适。
当然,有时结构是一个了不起的选择。并非每次都这样。我会但是,支持以下观点:如果您要使用struct
,则应该是readonly struct
(默认情况下)或ref struct
(如果您知道为什么要这么做);可变的非ref
结构是痛苦的秘诀。