라벨이 제네릭인 게시물 표시

C# ArrayList 사용법과 List 차이: 새 코드에서 선택하는 기준

이미지
C# ArrayList의 Add, Remove, 인덱스 접근을 예제로 설명하고 List와의 차이를 정리합니다. 오래된 예제의 의미는 살리되 현재 기준에서 잘못 적용하기 쉬운 부분을 함께 고쳤어요. 아래 순서대로 확인하면 단순한 화면 복사보다 실제 판단에 도움이 됩니다. ArrayList는 서로 다른 형식을 담을 수 있지만, 꺼낼 때 명시적인 형식 확인이 필요합니다. ArrayList는 object를 저장한다 ArrayList 는 크기가 자동으로 늘어나는 비제네릭 컬렉션입니다. 문자열과 숫자를 한 목록에 넣을 수 있지만, 내부에서는 모든 항목을 object 로 다뤄요. 값을 꺼낼 때 원래 형식을 알고 변환해야 하므로 오류가 실행 시점까지 늦게 발견될 수 있습니다. var items = new ArrayList(); items.Add("서울"); items.Add(3); string city = (string)items[0]; int count = (int)items[1]; 추가와 삭제는 쉽지만 형식 안전성이 약하다 Add 는 끝에 값을 넣고, Insert 는 지정한 위치에 끼워 넣습니다. Remove 는 같은 값을 찾아 지우고, RemoveAt 은 인덱스로 삭제해요. 삭제 뒤에는 뒤쪽 인덱스가 당겨지므로 반복문 안에서 앞에서부터 지우면 항목을 건너뛸 수 있습니다. 값 형식이 섞인 상태에서 잘못 캐스팅하면 InvalidCastException 이 발생합니다. 값 형식은 object로 들어갈 때 박싱되고 다시 꺼낼 때 언박싱되므로 새 코드에서 굳이 감수할 이유가 적습니다. 새 코드에서는 List를 먼저 선택한다 List<T> 는 저장 형식을 컴파일 시점에 고정합니다. List<int> 에는 정수만 들어가므로 잘못된 값이 들어가는 문제를 빌드 단계에서 잡을 수 있어요. API가 ArrayList를 반환하는 오래된 코드와 연동할 때는 ArrayList가 필요할 수 있지만, 새 컬렉션을 설계한다면 List가 기본 선...