Jef*_*tin 14 .net linear-types
是否有合理的方式在.Net(Compact Framework/desktop 3.5公共子集)中表达线性类型的概念,以这种方式:(a)所需的语法不会变得过于冗长,复杂或其他痛苦, (b)不变量可以在运行时强制执行,也可以在编译时通过代码分析进行验证(因此,一个全力以赴的维护程序员不能轻易忽略不变量)?这里的想法是避免在子系统边界处防御性地复制命令对象.
.Net中有两种类型:引用类型和值类型。
当您通过将引用类型分配给另一个变量来复制引用类型时,仅复制引用。
复制值类型时,会逐字节复制该类型的全部内容。
在这两种情况下,都无法阻止、修改或获取有关它的通知(与 C++ 的复制构造函数相反)。这意味着您无法在 .Net 中实现线性类型。
正如其他人建议的那样,您可以使用不可变(或可冻结)类型。