컬렉션 정의에는 보통 꺾쇠괄호 안에 자리 표시자가 들어가며, 관례상 흔히 T를 사용해요. 이런 컬렉션을 제네릭 형식이라고 해요. 이렇게 하면 컬렉션 사용자가 컬렉션에 어떤 형식의 항목을 저장할지 지정할 수 있어요. 아래 예제 코드에서는 문자열 배열을 인스턴스화하고 있어요.
C#의 배열은 기본 값이나 구조체 또는 클래스의 인스턴스를 모아 놓은 컬렉션이에요. 이들은 기본 클래스 라이브러리에서 List<T>로 구현되어 있어요. 여기서 T는 배열에 들어 있는 항목의 형식이에요. API는 배열을 만들고 조작하기 위한 다양한 메서드를 제공해요.
항목은 배열에 추가하거나 배열에서 제거할 수 있어요. 필요에 따라 크기가 커지거나 작아져요.
var listOfStrings = new List<string>();
이 연습 문제에서는 Exercism에서 배우고 싶은 프로그래밍 언어 목록을 관리하는 코드를 작성해요.
아홉 개의 과제가 있고, 모두 배열을 다루는 내용이에요.
배우고 싶은 언어를 관리하려면 새 배열을 만들어야 해요.
새롭고 비어 있는 배열을 반환하는 정적 Languages.NewList() 메서드를 구현해요.
Languages.NewList()
// => empty list
지금은 배우고 싶은 언어가 적힌 종이 한 장이 있어요: C#, Clojure, Elm.
이 배열을 반환하도록 정적 Languages.GetExistingLanguages() 메서드를 구현해요.
Languages.GetExistingLanguages();
// => {"C#", "Clojure", "Elm"}
Exercism을 둘러보면서 더 흥미로운 언어를 찾으면, 그 언어를 배열에 추가하고 싶어질 거예요.
배열의 끝에 새 언어를 추가하는 정적 Languages.AddLanguage() 함수를 구현해요.
Languages.AddLanguage(Languages.GetExistingLanguages(), "VBA");
// => {"C#", "Clojure", "Elm", "VBA"}
언어를 하나씩 세는 건 불편해요.
배열에 있는 언어의 개수를 세는 정적 Languages.CountLanguages() 메서드를 구현해요.
Languages.CountLanguages(Languages.GetExistingLanguages())
// => 3
언어가 있는지 확인하는 정적 Languages.HasLanguage() 메서드를 구현해요.
Languages.HasLanguage(Languages.GetExistingLanguages(), "Elm")
// => true
어느 순간, 배열이 사실 거꾸로 정렬되어 있다는 걸 깨닫게 돼요!
배열을 뒤집는 정적 Languages.ReverseList() 메서드를 구현해요.
Languages.ReverseList(Languages.GetExistingLanguages())
// => {"Elm", "Clojure", "C#"}
모든 언어를 사랑하지만, C#은 마음속에 특별한 자리가 있어요. 그래서 다음 조건 중 하나라도 참이면 그 언어 배열에 정말 흥미를 느껴요:
언어 배열이 흥미로운지 확인하는 정적 Languages.IsExciting() 메서드를 구현해요:
Languages.IsExciting(Languages.GetExistingLanguages())
// => true
배열에서 지정한 언어를 제거하는 정적 Languages.RemoveLanguage() 메서드를 구현해요.
Languages.RemoveLanguage(Languages.GetExistingLanguages(), "Clojure")
// => { "C#", "Elm" }
배열에서 같은 언어가 반복되는지 확인하는 정적 Languages.IsUnique() 메서드를 구현해요.
이 메서드가 호출될 때 언어 배열(즉, 매개변수)은 비어 있지 않다고 보장되며, 배열이 수정되는지는 상관없어요.
Languages.IsUnique(Languages.GetExistingLanguages())
// => true
Exercism에 가입하고 C# 트랙을 개념 62개연습 문제 178개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.