我正在学习.NET中的代码协定,并且试图了解纯构造函数的概念。该代码合同文档状态:
合同中调用的所有方法都必须是纯函数。也就是说,它们不得更新任何先前存在的状态。允许使用纯方法修改进入纯方法后创建的对象。
并且PureAttribute
文档指出:
指示类型或方法是纯类型,即,它不进行任何可见状态更改。
对于方法,我理解这些语句,但是构造函数呢?假设您有一个像这样的课程:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
显然,此构造函数确实会影响新Foo
对象的状态,但是它没有其他副作用(例如,它不操纵任何参数或调用任何非纯方法)。这是候选人[Pure]
吗?[Pure]
在构造函数上放置属性的意义是什么?何时应该在自己的代码中执行此操作?