关于[Pure]方法的问题

dev*_*ium 22 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*abe 31

如果[Pure]您的意思是使用System.Diagnostics.Contracts中Pure属性标记,则文档说:

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

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