关于[Pure]方法的问题

时间:2010-05-07 04:52:40

标签: c# code-contracts

以下方法是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;
    }
}

1 个答案:

答案 0 :(得分:31)

如果[Pure]表示您使用Pure中的System.Diagnostics.Contracts属性标注,则文档说明:

  

纯方法不会使任何可见   状态变化。

由于您的方法似乎没有任何可见的状态更改(即没有副作用),因此它将符合[Pure]属性。