Действительно ли следующий метод чист? Я сказал бы так, поскольку это не изменяет в так или иначе текущем классе, таким образом, все, что мы можем теперь currenly "видеть" в классе, прежде, чем выполнить этот метод все еще будет точно тем же после. Я корректен?
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;
}
}
Если под [Чистый]
вы имеете в виду помеченный атрибутом Чистый
из System.Diagnostics. Контракты , документация гласит:
Чистые методы не делают видимых изменений состояния .
Поскольку ваш метод не производит видимых изменений состояния (т. Е. Без побочных эффектов), он соответствует атрибуту [Pure]
.