Вопрос о [чистых] методах - PullRequest
22 голосов
/ 07 мая 2010

Является ли следующий метод чистым? Я бы сказал так, поскольку в любом случае он не изменится в текущем классе, поэтому все, что мы можем сейчас «видеть» в классе, до того, как запустить этот метод, останется точно таким же после. Я прав?

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 Ответ

31 голосов
/ 07 мая 2010

Если под [Pure] имеется в виду пометка атрибутом Pure от System.Diagnostics.Contracts , в документации сказано:

Pureметоды не вносят никаких видимых изменений состояния.

Поскольку ваш метод, по-видимому, не вносит никаких видимых изменений состояния (т. е. никаких побочных эффектов), он будет соответствовать атрибуту [Pure].

...