푸터 콘텐츠로 바로가기
.NET 도움말

C# 리스트 (개발자를 위한 작동 방식)

리스트는 C#에서 데이터 컬렉션을 저장하고 조작하는 데 사용되는 다목적 및 동적 데이터 구조입니다. 그들은 강력하고 타입 안정적인 컬렉션 클래스와 강력하게 타입된 객체를 제공하는 System.Collections.Generic 네임스페이스의 일부입니다. 이 초급 친화적인 튜토리얼은 C# 리스트 사용의 기초, 요소 생성 및 추가, 지정된 인덱스 또는 첫 번째 발생 접근, 지정된 요소 수정 및 요소 제거와 같은 일반적인 사용 사례로 안내합니다.

리스트 생성

List 클래스를 사용하기 시작하려면 먼저 코드에 System.Collections.Generic 네임스페이스를 포함시켜야 합니다:

using System.Collections.Generic;
using System.Collections.Generic;
Imports System.Collections.Generic
$vbLabelText   $csharpLabel

일반 네임스페이스를 추가한 후에, 모든 요소의 데이터 유형을 꺾쇠 괄호(< >)로 지정하여 새로운 List 객체를 생성합니다. 여기 정수 리스트를 생성하는 방법의 예가 있습니다:

List<int> numbers = new List<int>();
List<int> numbers = new List<int>();
Dim numbers As New List(Of Integer)()
$vbLabelText   $csharpLabel

처음부터 몇 가지 초기 값으로 리스트를 초기화하거나 지정된 컬렉션으로 정의할 수도 있습니다:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
Dim fruits As New List(Of String) From {"apple", "banana", "cherry"}
$vbLabelText   $csharpLabel

리스트의 기본 초기 용량을 지정할 수도 있습니다. 지정된 초기 용량은 리스트의 기본 최대 용량입니다.

리스트의 메서드들

리스트에 요소 수 추가

List에 요소를 추가하려면 Add() 메서드를 사용하세요:

numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
numbers.Add(1);     // Adds first element
numbers.Add(2);
numbers.Add(3);
numbers.Add(1) ' Adds first element
numbers.Add(2)
numbers.Add(3)
$vbLabelText   $csharpLabel

지정된 컬렉션에서 요소 범위를 리스트에 추가하려면 AddRange 메서드를 사용할 수도 있습니다:

List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
List<int> moreNumbers = new List<int> { 4, 5, 6 };
numbers.AddRange(moreNumbers);
Dim moreNumbers As New List(Of Integer) From {4, 5, 6}
numbers.AddRange(moreNumbers)
$vbLabelText   $csharpLabel

리스트 요소 접근하기

배열과 마찬가지로 인덱스를 사용하여 리스트의 개별 요소에 접근할 수 있습니다:

string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
string firstFruit = fruits[0];          // "apple"
string secondFruit = fruits[1];         // "banana"
Dim firstFruit As String = fruits(0) ' "apple"
Dim secondFruit As String = fruits(1) ' "banana"
$vbLabelText   $csharpLabel

리스트는 0부터 시작하는 인덱스라는 점을 염두에 두십시오, 그래서 첫 번째 요소는 인덱스가 0입니다. 위의 예제는 해당 요소가 존재하면 문자열에 저장할 것입니다.

리스트 요소 수정하기

리스트의 요소를 수정하려면 원하는 인덱스에 있는 요소에 단순히 새 값을 할당하면 됩니다, 0부터 시작하는 인덱스임을 염두에 두십시오:

fruits[1] = "blueberry";
fruits[1] = "blueberry";
fruits(1) = "blueberry"
$vbLabelText   $csharpLabel

이제 fruits 목록의 두 번째 요소가 "블루베리"로 바뀌었습니다.

목록에서 요소 제거하기

리스트에서 요소를 제거하려면 첫 번째로 발생하는 지정된 요소를 제거하는 Remove 메서드를 사용할 수 있습니다:

fruits.Remove("apple");
fruits.Remove("apple");
fruits.Remove("apple")
$vbLabelText   $csharpLabel

또한, 지정된 인덱스의 요소를 제거하기 위해 RemoveAt 메서드를 사용할 수 있습니다:

fruits.RemoveAt(0);
fruits.RemoveAt(0);
fruits.RemoveAt(0)
$vbLabelText   $csharpLabel

리스트에서 모든 요소를 제거하려면 Clear 메서드를 사용하세요:

fruits.Clear();
fruits.Clear();
fruits.Clear()
$vbLabelText   $csharpLabel

목록에서 요소 찾기

리스트에 특정 요소가 포함되어 있는지 확인하려면 Contains() 메서드를 사용할 수 있습니다:

bool containsApple = fruits.Contains("apple");  // true
bool containsApple = fruits.Contains("apple");  // true
Dim containsApple As Boolean = fruits.Contains("apple") ' true
$vbLabelText   $csharpLabel

요소의 첫 번째 발생 위치의 인덱스를 찾으려면 IndexOf 메서드를 사용하세요:

int appleIndex = fruits.IndexOf("apple");  // 0
int appleIndex = fruits.IndexOf("apple");  // 0
Dim appleIndex As Integer = fruits.IndexOf("apple") ' 0
$vbLabelText   $csharpLabel

요소가 발견되지 않으면, IndexOf는 -1을 반환합니다.

목록 순회하기

리스트의 요소를 반복하려면 foreach 루프를 사용할 수 있습니다:

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
For Each fruit As String In fruits
	Console.WriteLine(fruit)
Next fruit
$vbLabelText   $csharpLabel

또한, 리스트의 요소 수를 반환하는 Count 속성과 함께 for 루프를 사용할 수도 있습니다:

for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
for (int i = 0; i < fruits.Count; i++)
{
    Console.WriteLine(fruits[i]);
}
For i As Integer = 0 To fruits.Count - 1
	Console.WriteLine(fruits(i))
Next i
$vbLabelText   $csharpLabel

목록 정렬하기

리스트를 오름차순으로 정렬하려면 Sort 메서드를 사용하세요:

List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 4 };
unsortedNumbers.Sort();

// Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
Dim unsortedNumbers As New List(Of Integer) From {5, 2, 8, 1, 4}
unsortedNumbers.Sort()

' Now, unsortedNumbers is { 1, 2, 4, 5, 8 }
$vbLabelText   $csharpLabel

내림차순으로 리스트를 정렬하려면, 사용자 정의 비교를 사용하여 Sort 메서드를 사용할 수 있습니다:

unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
unsortedNumbers.Sort((a, b) => b.CompareTo(a));

// Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
unsortedNumbers.Sort(Function(a, b) b.CompareTo(a))

' Now, unsortedNumbers is { 8, 5, 4, 2, 1 }
$vbLabelText   $csharpLabel

더 복잡한 정렬을 위해 사용자 정의 IComparer 클래스를 구현하거나 LINQ(언어 통합 쿼리)를 사용할 수 있습니다. 이진 검색 알고리즘은 정렬된 목록에서 작동합니다.

리스트와 LINQ 사용하기

LINQ는 목록을 포함한 컬렉션에 강력한 쿼리와 변환을 수행할 수 있게 해줍니다. LINQ를 사용하려면 먼저 코드에 System.Linq 네임스페이스를 포함시켜야 합니다:

using System.Linq;
using System.Linq;
Imports System.Linq
$vbLabelText   $csharpLabel

다음은 목록에 대한 LINQ 쿼리의 몇 가지 예입니다:

목록 필터링

List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
List<int> evenNumbers = numbers.Where(x => x % 2 == 0).ToList();
Dim evenNumbers As List(Of Integer) = numbers.Where(Function(x) x Mod 2 = 0).ToList()
$vbLabelText   $csharpLabel

목록의 요소 매핑(변환)

List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
List<string> fruitNamesUpperCase = fruits.Select(x => x.ToUpper()).ToList();
Dim fruitNamesUpperCase As List(Of String) = fruits.Select(Function(x) x.ToUpper()).ToList()
$vbLabelText   $csharpLabel

목록에서 최소값 및 최대값 찾기

int minValue = numbers.Min();
int maxValue = numbers.Max();
int minValue = numbers.Min();
int maxValue = numbers.Max();
Dim minValue As Integer = numbers.Min()
Dim maxValue As Integer = numbers.Max()
$vbLabelText   $csharpLabel

목록을 배열로 변환하기

리스트를 배열로 변환하려면 ToArray 메서드를 사용할 수 있습니다:

int[] numbersArray = numbers.ToArray();
int[] numbersArray = numbers.ToArray();
Dim numbersArray() As Integer = numbers.ToArray()
$vbLabelText   $csharpLabel

IronPDF를 사용하여 목록 데이터를 PDF로 내보내기

이 섹션에서는 IronPDF 라이브러리를 사용하여 리스트의 데이터를 PDF 파일로 내보내는 방법을 설명합니다. 이것은 보고서나 데이터의 인쇄 가능한 버전을 생성하고 싶을 때 유용할 수 있습니다.

먼저 프로젝트에 IronPDF NuGet 패키지를 다운로드하고 설치하십시오:

Install-Package IronPdf

그런 다음, 코드에 IronPdf 네임스페이스를 포함시킵니다:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

이제 문자열의 List을 HTML 테이블로 변환한 후 PDF 파일로 내보내는 간단한 함수를 만들어 봅시다:

using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
using System.Collections.Generic;
using System.Text;
using IronPdf;

void ExportListToPdf(List<string> data, string pdfFilePath)
{
    // Create an HTML table from the list data
    StringBuilder htmlBuilder = new StringBuilder();
    htmlBuilder.Append("<table><tr><th>Item</th></tr>");

    foreach (string item in data)
    {
        htmlBuilder.Append($"<tr><td>{item}</td></tr>");
    }

    htmlBuilder.Append("</table>");

    // Convert the HTML table to a PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());

    // Save the PDF to the specified file path
    pdf.SaveAs(pdfFilePath);
}
Imports System.Collections.Generic
Imports System.Text
Imports IronPdf

Private Sub ExportListToPdf(ByVal data As List(Of String), ByVal pdfFilePath As String)
	' Create an HTML table from the list data
	Dim htmlBuilder As New StringBuilder()
	htmlBuilder.Append("<table><tr><th>Item</th></tr>")

	For Each item As String In data
		htmlBuilder.Append($"<tr><td>{item}</td></tr>")
	Next item

	htmlBuilder.Append("</table>")

	' Convert the HTML table to a PDF using IronPDF
	Dim renderer = New ChromePdfRenderer()
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())

	' Save the PDF to the specified file path
	pdf.SaveAs(pdfFilePath)
End Sub
$vbLabelText   $csharpLabel

이 함수를 사용하려면 단순히 목록과 원하는 PDF 파일 경로로 호출하십시오:

List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
List<string> fruits = new List<string> { "apple", "banana", "cherry" };
ExportListToPdf(fruits, "Fruits.pdf");
Dim fruits As New List(Of String) From {"apple", "banana", "cherry"}
ExportListToPdf(fruits, "Fruits.pdf")
$vbLabelText   $csharpLabel

이는 IronPDF를 사용하여 HTML을 PDF로 변환함을 통해 과일 목록이 있는 테이블을 포함하는 "Fruits.pdf"라는 PDF 파일을 생성할 것입니다. HTML 테이블에 사용자 정의 스타일을 추가하거나 PDF에 추가 콘텐츠를 포함시키는 것처럼 필요에 맞게 ExportListToPdf 함수를 수정할 수 있습니다.

C# 리스트 (개발자를 위한 작동 원리) 그림 1 - HTML에서 PDF로

결론

이 초급자 친화적인 튜토리얼에서는 C# 목록 사용의 기본을 다루고 목록 데이터를 PDF 파일로 내보내기 위해 IronPDF를 통합하는 방법을 보여줍니다. IronPDF을 프로젝트에 포함함으로써 C# 프로젝트에서 쉽게 보고서, 송장 또는 기타 인쇄 가능한 문서를 생성할 수 있습니다.

IronPDF는 무료 체험을 제공하여 구매 전에 그 기능을 테스트할 수 있게 합니다.

자주 묻는 질문

C#에서 리스트를 어떻게 생성하나요?

C#에서 리스트를 생성하려면 System.Collections.Generic 네임스페이스를 포함해야 합니다. 그 후, 꺾쇠 괄호 안에 데이터 유형을 지정하여 리스트를 선언할 수 있습니다. 예: List numbers = new List();

C# 리스트에 요소를 추가하는 데 사용되는 메서드는 무엇인가요?

개별 요소를 추가하는 Add() 메서드와 요소의 컬렉션을 추가하는 AddRange() 메서드를 사용하여 C# 리스트에 요소를 추가할 수 있습니다.

C# 리스트를 PDF 파일로 내보내는 방법은 무엇인가요?

C# 리스트를 PDF 파일로 내보내려면 IronPDF 라이브러리를 사용할 수 있습니다. 리스트 데이터를 HTML 테이블 형식으로 변환한 후 IronPDF를 사용하여 PDF로 렌더링하세요.

C# 리스트를 정렬하는 가장 좋은 방법은 무엇인가요?

C# 리스트를 오름차순으로 정렬하려면 Sort() 메서드를 사용할 수 있습니다. 내림차순으로 정렬하려면 사용자 정의 비교 대리자를 사용하여 Sort()를 사용할 수 있습니다.

C# 리스트의 요소를 어떻게 접근하나요?

C# 리스트의 요소는 배열과 유사하게 인덱스를 사용하여 접근할 수 있습니다. 리스트는 0부터 시작하는 인덱스이므로 리스트의 위치를 사용하여 요소를 검색할 수 있습니다.

C# 리스트에서 요소를 제거하는 옵션은 무엇인가요?

C# 리스트에서 요소를 제거하려면 특정 요소를 제거하는 Remove() 메서드, 특정 인덱스를 제거하는 RemoveAt() 메서드, 모든 요소를 제거하는 Clear() 메서드를 사용할 수 있습니다.

C# 리스트와 함께 LINQ를 어떻게 활용할 수 있나요?

LINQ는 C# 리스트와 함께 사용되어 필터링, 매핑, 최소값 및 최대값 찾기 등 강력한 쿼리와 변환을 효율적으로 수행할 수 있습니다.

C# 리스트를 배열로 변환하는 방법은 무엇인가요?

C# 리스트를 배열로 변환하려면 ToArray() 메서드를 사용하여 리스트의 요소를 포함하는 새 배열을 생성할 수 있습니다.

C# 리스트의 일반적인 사용 사례는 무엇인가요?

C# 리스트는 데이터의 동적 컬렉션 관리, LINQ를 이용한 복잡한 쿼리 수행, IronPDF와 같은 라이브러리를 사용한 보고서 또는 문서 생성에 일반적으로 사용됩니다.

C# 리스트의 요소를 어떻게 반복하나요?

foreach 루프를 사용하여 간단한 반복, for 루프를 사용하여 인덱스가 필요한 경우 반복할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해