Является ли следующий метод чистым? Я бы сказал так, поскольку в любом случае он не изменится в текущем классе, поэтому все, что мы можем сейчас «видеть» в классе, до того, как запустить этот метод, останется точно таким же после. Я прав?
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;
}
}