일반 목록 형식을 사용하여 데이터 컬렉션을 관리하는 방법 알아보기
이 자습서는 브라우저를 사용하여 C# 코드를 작성하고 코드를 컴파일하고 실행한 결과를 확인하는 방법을 대화형으로 설명합니다. 컬렉션과 배열을 작성, 수정 및 탐색하는 일련의 단원이 포함되어 있습니다.
팁
포커스 모드 내에 코드 조각을 붙여넣으려면 바로 가기 키(Ctrl + v 또는 cmd + v)를 사용해야 합니다.
목록 만들기
대화형 창에서 다음 코드를 실행합니다. 포커스 모드 시작 단추를 선택합니다. 그런 다음, 대화형 창에 다음 코드 블록을 입력하고(<name>
을 사용자 이름으로 바꿈) 실행을 선택합니다.
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
사용자 환경에서 이를 실행하는 경우 로컬 버전에 대한 지침을 따라야 합니다.
문자열 목록을 만들고, 해당 목록에 세 개의 이름을 추가하고, 모든 CAPS에 이름을 인쇄했습니다. 이전 자습서에서 학습한 개념을 사용하여 목록을 반복합니다.
이름을 표시하는 코드는 문자열 보간 기능을 사용합니다. string
앞에 $
문자를 넣으면 문자열 선언에 C# 코드를 포함할 수 있습니다. 실제 문자열은 C# 코드를 생성하는 값으로 바꿉니다. 이 예제에서는 String.ToUpper 메서드를 호출했기 때문에 {name.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");
실행을 다시 선택하여 결과를 확인합니다. C#에서 인덱스는 0부터 시작하므로, 가장 큰 유효 인덱스는 목록의 항목 수보다 하나 작습니다.
목록 검색 및 정렬
샘플에서는 상대적으로 작은 목록을 사용하지만 애플리케이션에서는 수천에 달하는 많은 요소가 포함된 목록을 작성할 수 있습니다. 이러한 큰 컬렉션에서 요소를 찾으려면 여러 항목의 목록을 검색해야 합니다. IndexOf 메서드는 항목을 검색하고 항목의 인덱스를 반환합니다. 목록에 항목이 없으면 IndexOf
가 -1
을 반환합니다. 작동 방식을 확인해 보세요. 지금까지 작성한 코드 아래에 다음 코드를 추가합니다.
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
항목이 목록에 있는지 알 수 없으므로 IndexOf에서 반환된 인덱스를 항상 확인해야 합니다. -1
인 경우 항목을 찾을 수 없습니다.
목록의 항목도 정렬할 수 있습니다. Sort 메서드는 일반적인 순서(문자열의 경우 사전순)로 목록의 모든 항목을 정렬합니다. 이 코드를 추가하고 다시 실행하세요.
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
다른 형식 목록
지금까지 목록에 string
형식을 사용했습니다. 다른 형식을 사용하여 List<T>를 만들어 보겠습니다. 숫자 집합을 빌드하겠습니다. 지금까지 작성한 코드를 삭제하고 다음 코드로 바꿉니다.
var fibonacciNumbers = new List<int> {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);
}
실행을 눌러 결과를 확인합니다.
과제
이 단원과 이전 단원에서 학습한 개념을 함께 적용할 수 있는지 확인하세요. 피보나치 수를 사용하여 지금까지 빌드한 내용을 확장합니다. 코드를 작성하여 시퀀스에서 처음 20개 수를 생성합니다. (힌트: 20번째 피보나치 수는 6765입니다.)
과제 완료
다음과 같은 답을 제시했나요?
var fibonacciNumbers = new List<int> {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개의 항목이 추가될 때까지 루프가 반복됩니다.
축하합니다!
목록 대화형 자습서를 완료했습니다. 이는 C# 대화형 자습서의 최종 소개입니다. .NET 사이트를 방문하여 .NET SDK를 다운로드하고, 머신에 프로젝트를 만들고, 계속해서 코딩할 수 있습니다. “다음 단계” 섹션은 이 자습서로 돌아옵니다.
다음 문서에서는 .NET 컬렉션에 대해 자세히 알아볼 수 있습니다.
본 섹션과 관련하여 문제가 있으십니까? 문제가 있으시면 본 섹션을 개선하기 위해 피드백을 제출해 주세요.
.NET