컬렉션은 자체 메서드에 인수로 전달되어서는 안 됩니다.

반응형

컬렉션을 컬렉션 자체 메서드에 인수로 전달하는 것은 오류(다른 인수가 의도된 것임)이거나 단순히 무의미한 코드입니다.

또한 일부 메서드에서는 실행 중에 인수가 수정되지 않은 상태로 유지되어야 하므로 컬렉션을 자신에게 전달하면 예기치 않은 동작이 발생할 수 있습니다.

나쁜 예:

var list = new List<int>();

list.AddRange(list); // Noncompliant
list.Concat(list); // Noncompliant

list.Union(list); // Noncompliant; always returns list
list.Except(list); // Noncompliant; always empty
list.Intersect(list); // Noncompliant; always list
list.SequenceEqual(list); // Noncompliant; always true

var set = new HashSet<int>();
set.UnionWith(set); // Noncompliant; no changes
set.ExceptWith(set); // Noncompliant; always empty
set.IntersectWith(set); // Noncompliant; no changes
set.IsProperSubsetOf(set); // Noncompliant; always false
set.IsProperSupersetOf(set); // Noncompliant; always false
set.IsSubsetOf(set); // Noncompliant; always true
set.IsSupersetOf(set); // Noncompliant; always true
set.Overlaps(set); // Noncompliant; always true
set.SetEquals(set); // Noncompliant; always true
set.SymmetricExceptWith(set); // Noncompliant; always empty
반응형