如何在C#/ .Net中表示线性类型?

Jef*_*tin 14 .net linear-types

是否有合理的方式在.Net(Compact Framework/desktop 3.5公共子集)中表达线性类型的概念,以这种方式:(a)所需的语法不会变得过于冗长,复杂或其他痛苦, (b)不变量可以在运行时强制执行,也可以在编译时通过代码分析进行验证(因此,一个全力以赴的维护程序员不能轻易忽略不变量)?这里的想法是避免在子系统边界处防御性地复制命令对象.

svi*_*ick 1

.Net中有两种类型:引用类型和值类型。

当您通过将引用类型分配给另一个变量来复制引用类型时,仅复制引用。

复制值类型时,会逐字节复制该类型的全部内容。

在这两种情况下,都无法阻止、修改或获取有关它的通知(与 C++ 的复制构造函数相反)。这意味着您无法在 .Net 中实现线性类型。

正如其他人建议的那样,您可以使用不可变(或可冻结)类型。