C에서 목록<T> 사용하여 데이터 수집을 관리하는 방법 알아보기#
이 소개 자습서에서는 C# 언어 및 클래스의 기본 사항을 소개합니다.
이 자습서에서는 브라우저를 사용하여 C# 코드를 작성하고 코드를 컴파일하고 실행한 결과를 확인하여 C#을 대화형으로 설명합니다. 컬렉션 및 배열을 만들고 수정하고 탐색하는 일련의 단원을 포함합니다. 주로 List<T> 클래스로 작업합니다.
기본 목록 예제
팁
코드 조각 블록에 "실행" 단추가 포함된 경우 해당 단추는 대화형 창을 열거나 대화형 창의 기존 코드를 바꿉니다. 코드 조각에 "실행" 단추가 포함되지 않은 경우 코드를 복사하여 현재 대화형 창에 추가할 수 있습니다.
대화형 창에서 다음 코드를 실행합니다.
<name>
을 자신의 이름으로 바꾼 후 을 선택하고을 실행하세요.
List<string> names = ["<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부터 시작하므로 가장 큰 유효한 인덱스는 목록의 항목 수보다 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);
}
실행 눌러 결과를 확인합니다.
도전
이 단원과 이전 단원의 몇 가지 개념을 함께 사용할 수 있는지 확인합니다. 피보나치 숫자로 지금까지 빌드한 내용을 확장합니다. 시퀀스에서 처음 20개의 숫자를 생성하는 코드를 작성해 봅니다. (힌트로, 20 피보나치 번호는 6765입니다.)
이런 식으로 생각해 왔나요?
루프를 반복할 때마다 목록에서 마지막 두 정수를 가져와 합계를 계산하고 해당 값을 목록에 추가합니다. 목록에 20개의 항목을 추가할 때까지 루프가 반복됩니다.
C# 대화형 자습서의 최종 소개인 '목록 대화형 자습서'를 완료했습니다. .NET 사이트 방문하여 .NET SDK를 다운로드하고, 머신에 프로젝트를 만들고, 코딩을 계속할 수 있습니다. "다음 단계" 섹션에서는 이러한 자습서로 돌아갑니다.
다음 문서에서 .NET 컬렉션에 대해 자세히 알아볼 수 있습니다.
축하합니다. 목록 자습서를 완료했습니다. 사용자 고유의 개발 환경에서 더 많은 자습서를 계속 진행할 수 있습니다.
컬렉션 .NET 기본 사항 문서에서 List
형식을 사용하는 방법에 대해 자세히 알아볼 수 있습니다. 또한 다른 많은 컬렉션 형식에 대해서도 알아봅니다.
.NET