이 소개 자습서에서는 C# 언어 및 클래스의 System.Collections.Generic.List<T> 기본 사항을 소개합니다.
이 자습서에서는 C#을 설명합니다. C# 코드를 작성하고 해당 코드를 컴파일하고 실행한 결과를 확인합니다. 컬렉션을 만들고, 수정하고, 탐색하는 일련의 단원을 포함합니다. 주로 List<T> 클래스로 작업합니다.
이 자습서에서는 다음을 수행합니다.
- C# 개발 환경을 사용하여 GitHub Codespace를 시작합니다.
- 다양한 유형의 목록을 만듭니다.
- 목록 내용을 수정합니다.
- 목록을 검색하고 정렬합니다.
필수 조건
다음 중 하나가 있어야 합니다.
- GitHub Codespaces를 사용하는 GitHub 계정입니다. 아직 계정이 없는 경우 GitHub.com 체험 계정을 만들 수 있습니다.
- 다음 도구가 설치된 컴퓨터:
기본 목록 예제
자습서 환경에서 GitHub Codespace를 시작하려면 자습서 코드스페이스 리포지토리에 대한 브라우저 창을 엽니다. 녹색 코드 단추와 Codespaces 탭을 선택합니다. 그런 다음, + 이 환경을 사용하여 새 Codespace를 만드는 기호를 선택합니다. 이 시리즈의 다른 자습서를 완료한 경우 새 자습서를 만드는 대신 해당 코드스페이스를 열 수 있습니다.
코드스페이스가 로드되면 lists.cs자습서 폴더에 새 파일을 만듭니다.
새 파일을 엽니다.
다음 코드를 lists.cs 입력하거나 복사합니다.
List<string> names = ["<name>", "Ana", "Felipe"]; foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }터미널 창에 다음 명령을 입력하여 코드를 실행합니다.
cd tutorials dotnet lists.cs
문자열 목록을 만들고, 해당 목록에 세 개의 이름을 추가하고, 모든 대문자로 이름을 인쇄했습니다. 이전 자습서에서 배운 개념을 사용하여 목록을 반복합니다.
이름을 표시하는 코드는 문자열 보간 기능을 사용합니다.
string 문자를 사용하여 $ 앞에 오는 경우 문자열 선언에 C# 코드를 포함할 수 있습니다. 실제 문자열은 C# 코드가 생성한 값으로 대체됩니다.
{name.ToUpper()} 메서드를 호출했기 때문에, 이 예제에서는 String.ToUpper를 각 이름으로 바꾸며, 각 이름은 대문자로 변환됩니다.
계속 살펴보겠습니다.
목록 내용 수정
만든 컬렉션은 List<T> 형식을 사용합니다. 이 형식은 요소의 시퀀스를 저장합니다. 꺾쇠 괄호 사이의 요소 타입을 지정합니다.
이 List<T> 형식의 중요한 측면 중 하나는 요소를 추가하거나 제거할 수 있도록 확장하거나 축소할 수 있다는 것입니다. 콘텐츠를 표시한 후 내용을 수정하여 결과를 볼 수 있습니다.
이미 작성한 코드(내용을 인쇄하는 루프) 다음에 다음 코드를 추가합니다.
Console.WriteLine(); names.Add("Maria"); names.Add("Bill"); names.Remove("Ana"); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }목록 끝에 두 개의 이름을 더 추가했습니다. 당신도 하나 제거했습니다. 이 코드 블록의 출력은 초기 내용을 표시한 다음 빈 줄과 새 콘텐츠를 인쇄합니다.
List<T>을(를) 사용하면 인덱스로 개별 항목을 참조할 수도 있습니다.
[및]토큰을 사용하여 항목에 액세스합니다. 이미 작성한 코드 다음에 다음 코드를 추가하고 사용해 보세요.Console.WriteLine($"My name is {names[0]}."); Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");목록의 끝을 지나서 액세스할 수 없습니다. 속성을 사용하여 Count 목록이 얼마나 긴지 확인할 수 있습니다.
다음 코드를 추가합니다.
Console.WriteLine($"The list has {names.Count} people in it");터미널 창에 다시 입력
dotnet lists.cs하여 결과를 확인합니다. C#에서 인덱스는 0부터 시작하므로 가장 큰 유효한 인덱스는 목록의 항목 수보다 1보다 작습니다.
인덱스에 대한 자세한 내용은 인덱스 및 범위 탐색 문서를 참조하세요.
목록 검색 및 정렬
샘플에서는 비교적 작은 목록을 사용하지만 애플리케이션에서 더 많은 요소가 포함된 목록을 만들 수 있으며, 때로는 수천 개의 번호가 매겨질 수도 있습니다. 이러한 더 큰 컬렉션에서 요소를 찾으려면 목록에서 다른 항목을 검색해야 합니다.
IndexOf 메서드는 항목을 검색하고 항목의 인덱스가 반환됩니다. 항목이 목록에 없으면 IndexOf-1반환합니다.
작동 방식을 확인해 보세요. 지금까지 작성한 내용 다음에 다음 코드를 추가합니다.
var index = names.IndexOf("Felipe"); if (index == -1) { Console.WriteLine($"When an item is not found, IndexOf returns {index}"); } else { Console.WriteLine($"The name {names[index]} is at index {index}"); } index = names.IndexOf("Not Found"); if (index == -1) { Console.WriteLine($"When an item is not found, IndexOf returns {index}"); } else { Console.WriteLine($"The name {names[index]} is at index {index}"); }항목이 목록에 있는지 알 수 없으므로 항상 IndexOf반환된 인덱스도 확인해야 합니다. 만약
-1이라면, 해당 항목을 찾을 수 없습니다.목록의 항목을 정렬할 수도 있습니다. Sort 메서드는 목록의 모든 항목을 일반 순서로 정렬합니다(문자열의 경우 사전순). 이 코드를 추가하고 다시 실행합니다.
names.Sort(); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }
다른 형식의 목록
지금까지 목록에서 string 타입을 사용했습니다. 다른 형식을 사용하여 List<T> 만들어 보겠습니다. 숫자 집합을 빌드해 보겠습니다.
소스 파일의 끝에 다음 코드를 추가합니다.
List<int> fibonacciNumbers = [1, 1];이 코드는 정수 목록을 만들고 처음 두 정수는 값 1로 설정합니다. 숫자 시퀀스인 피보나치 시퀀스두 개의 1로 시작합니다. 각각의 다음 피보나치 번호는 이전 두 숫자의 합계를 복용하여 발견된다.
다음 코드를 추가합니다.
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1]; var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2]; fibonacciNumbers.Add(previous + previous2); foreach (var item in fibonacciNumbers) { Console.WriteLine(item); }터미널 창에 입력
dotnet lists.cs하여 결과를 확인합니다.
도전
이 단원과 이전 단원의 몇 가지 개념을 함께 사용할 수 있는지 확인합니다. 피보나치 숫자로 지금까지 빌드한 내용을 확장합니다. 시퀀스에서 처음 20개의 숫자를 생성하는 코드를 작성해 봅니다. (힌트로, 20 피보나치 번호는 6765입니다.)
이런 식으로 생각해 왔나요?
List<int> fibonacciNumbers = [1, 1];
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
루프를 반복할 때마다 목록에서 마지막 두 정수를 가져와 합계를 계산하고 해당 값을 목록에 추가합니다. 목록에 20개의 항목을 추가할 때까지 루프가 반복됩니다.
목록 자습서를 완료했습니다. 다음 문서에서 .NET 컬렉션에 대해 자세히 알아볼 수 있습니다.
리소스 정리
GitHub는 30일 동안 비활성 상태이면 Codespace를 자동으로 삭제합니다. 이 시리즈에서 더 많은 자습서를 탐색하려는 경우 Codespace를 프로비전된 상태로 둘 수 있습니다.
.NET 사이트를 방문하여 .NET SDK를 다운로드할 준비가 되면 Codespace를 삭제할 수 있습니다. Codespace를 삭제하려면 브라우저 창을 열고 Codespaces로 이동합니다. 창에 코드스페이스 목록이 표시됩니다. 학습 자습서 코드스페이스에 대한 항목에서 점 3개(...)를 선택하고 삭제를 선택합니다.
다음 단계
.NET