더북(TheBook)

2.2.2 배열

지금까지 메모리 안에서 배열(array)이 어떻게 보이는지를 살펴보았다. 배열은 배열 크기를 초과하지 않는 개수만큼의 여러 항목을 저장하는 데 유용하다. 즉, 크기를 키우거나 바꿀 수 없는 정적 구조이다. 더 큰 배열을 원한다면 배열을 새로 만들고 이전 배열을 복사해야 한다. 배열에 대해 알아야 할 몇 가지 사항은 다음과 같다.

배열은 문자열과 달리 변경이 가능하다. 이것이 바로 배열이 하는 일이다. 배열 안의 내용을 자유롭게 가지고 놀 수 있다. 사실 배열을 불변으로 만드는 것은 정말 어렵고, 이를 시도하더라도 배열을 그저 부족한 인터페이스 후보자로 만드는 결과가 된다. 다음 속성을 살펴보자.

public string[] Usernames { get; }

속성에 세터(setter)가 없어도 여전히 타입이 배열이므로 변경이 가능하다. 변경하는 것을 막는 것은 아무것도 없다.

Usernames[0] = "root";

이 클래스를 여러분 혼자 사용한다 하더라도 상황이 복잡해질 수 있다. 절대적으로 필요한 경우가 아니라면 스스로 상태를 바꾸도록 놔둬서는 안 된다. 이 상태는 아무것도 아닌 게 아니라 모든 악의 근원이다. 앱의 상태 변수가 적을수록 문제도 줄어든다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.