以下方法是Pure吗?我会这样说,因为它不会改变当前的类,因此,在运行此方法之前,我们现在可以在类中“看到”的所有内容在之后仍然完全相同。我是对的吗?
class Set {
...
public ISet<T> UnionWith(ISet<T> set) {
ISet<T> unionSet = ...
foreach (Element element in this) {
unionSet.Add(element);
}
foreach (Element element in set) {
unionSet.Add(element);
}
return unionSet;
}
}
答案 0 :(得分:31)
如果[Pure]
表示您使用Pure
中的System.Diagnostics.Contracts属性标注,则文档说明:
纯方法不会使任何可见 状态变化。
由于您的方法似乎没有任何可见的状态更改(即没有副作用),因此它将符合[Pure]
属性。