-
매개변수 List<T>의 비밀프로그래밍/C# + Unity 2019. 8. 27. 22:01728x90
C#의 List<T>는 Array를 간편하게 .Add/.Insert/.Remove/.Clear 해주며 비슷한 기능을 하는 Arraylist보다 더 안전하고 더 잘 수행한다.
하지만 List<T>를 매개변수로 사용하게 되면 함정이 존재한다.
List는 참조 형식의 클래스이므로, 매개변수로 사용하고 값을 변경하게 되면 서브루틴 뿐만 아니라, 루틴에도 영향을 끼친다.
쉽게 설명하자면, List<T> b = a;라는 코드를 작성하고 b를 변경하면 a도 함께 변경된다.
이는 참조형식의 클래스에서 나타나는 특징이다.
이를 해결하는 방법은 간단하다.
참조 형식이므로 새로 객체를 만들어주면 그만이다.
※ 반목문으로 일일히 복사하는 방법도 있겠지만, 추천하지 않는다.
728x90댓글