이번에는 C# 프로그래밍 언어를 처음 배우거나 배열과 리스트에 대한 기본 개념을 명확히 이해할 수 있도록 설명해 보겠습니다. 배열과 리스트는 C#에서 매우 중요한 자료구조로, 배열과 리스트의 선언, 데이터 추가 및 삭제 방법, 크기 조절 차이, 그리고 메모리 관리 측면에서의 장단점을 이해할 수 있도록 정리해 보겠습니다.
C# 프로그래밍 언어의 배열과 리스트
배열과 리스트는 C#에서 데이터를 저장하고 관리하는 두 가지 주요 방식입니다. 이 두 자료형은 데이터를 저장할 때 일정한 순서로 나열하는 역할을 합니다. 그러나 배열은 고정된 크기를 가지며, 리스트는 동적으로 크기를 조절할 수 있다는 차이점이 있습니다.
C# 배열 (Array)
배열은 동일한 데이터 타입의 여러 값을 하나의 변수에 저장할 수 있는 자료 구조입니다. 배열은 크기가 고정되어 있어 선언 시에 미리 크기를 지정해줘야 합니다. 배열의 각 요소는 인덱스를 통해 접근할 수 있으며, 인덱스는 0부터 시작합니다.
배열의 선언 방법
배열을 선언하려면 데이터 타입과 배열의 크기를 명시해줘야 합니다. 예를 들어, 정수형 데이터를 5개 저장하는 배열을 선언하는 방법은 다음과 같습니다.
int[] numbers = new int[5]; // 크기가 5인 정수형 배열 선언
위 코드에서는 크기가 5인 `numbers` 배열이 생성되었고, 배열은 초기화되지 않은 상태로 모두 0을 기본값으로 가집니다.
배열에 값 넣기
배열의 각 위치에 값을 넣을 때는 인덱스를 사용합니다.
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
이렇게 각 요소에 값을 할당할 수 있습니다. 인덱스를 사용하여 배열의 특정 위치에 접근하고 값을 수정하는 것이 가능합니다.
배열의 값 출력하기
배열에 저장된 값을 출력할 때는 반복문을 사용하는 것이 일반적입니다. `for` 반복문을 사용하여 배열의 모든 요소를 출력해보겠습니다:
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
여기서 `numbers.Length`는 배열의 크기를 반환합니다. `for` 반복문을 사용하여 인덱스 0부터 시작해서 배열의 마지막 요소까지 순차적으로 접근해 값을 출력할 수 있습니다.
리스트 (List)
리스트는 배열과 유사하게 여러 값을 순서대로 저장할 수 있는 자료구조지만, **크기가 고정되어 있지 않다는 점**에서 배열과 다릅니다. 리스트는 필요에 따라 동적으로 크기가 증가하거나 감소할 수 있습니다. 또한, 리스트는 배열보다 다양한 기능을 제공합니다.
리스트의 선언 방법
리스트는 `System.Collections.Generic` 네임스페이스를 사용해야 합니다. 리스트를 선언하는 방법은 아래와 같습니다.
using System.Collections.Generic; // List 사용을 위해 추가
List numberList = new List(); // 정수형 리스트 선언
리스트는 배열과 달리 초기 크기를 지정하지 않아도 됩니다. 리스트는 데이터를 추가할 때 자동으로 크기를 조정합니다.
리스트에 값 추가하기
리스트에 값을 추가할 때는 `Add()` 메서드를 사용합니다.
numberList.Add(10);
numberList.Add(20);
numberList.Add(30);
리스트는 배열과 다르게 인덱스를 직접 지정하지 않고 값을 차례대로 추가할 수 있습니다.
리스트에서 값 제거하기
리스트의 특정 값을 제거하려면 `Remove()` 메서드를 사용합니다. 예를 들어, 리스트에서 `20`을 제거하고 싶다면 다음과 같이 작성할 수 있습니다.
numberList.Remove(20); // 리스트에서 값 20 제거
리스트에서 특정 인덱스에 위치한 값을 제거하려면 `RemoveAt()` 메서드를 사용합니다.
numberList.RemoveAt(1); // 인덱스 1에 위치한 값 제거
리스트의 값 출력하기
리스트의 값을 출력하는 방법은 배열과 비슷하게 반복문을 사용할 수 있습니다. `for` 반복문 또는 `foreach` 반복문을 사용할 수 있습니다:
foreach (int number in numberList)
{
Console.WriteLine(number);
}
`foreach` 반복문은 리스트의 모든 요소를 순차적으로 접근하기 때문에 리스트와 매우 잘 맞습니다.
배열과 리스트의 차이점
- 크기
- 배열은 크기가 고정되어 있으며, 초기화할 때 크기를 지정해야 합니다.
- 리스트는 크기가 동적으로 변경될 수 있으며, 값을 추가할 때마다 크기가 자동으로 조정됩니다.
- 데이터 추가 및 제거
- 배열은 크기가 고정되어 있어 데이터를 추가하거나 제거할 수 없습니다.
- 리스트는 데이터를 자유롭게 추가하거나 제거할 수 있습니다.
- 메모리 사용
- 배열은 고정된 메모리를 사용하므로 메모리 관리를 효율적으로 할 수 있습니다.
- 리스트는 동적 메모리 할당을 통해 더 유연하게 데이터를 관리할 수 있지만, 메모리 사용량이 배열보다 클 수 있습니다.
배열과 리스트의 선택 기준
- 데이터 크기가 고정적이고, 성능이 중요한 경우: 배열을 사용하는 것이 좋습니다. 배열은 고정된 크기로 인해 메모리 사용이 효율적이고, 인덱스 기반의 빠른 접근 속도를 제공합니다.
- 데이터 크기가 유동적이고, 관리가 중요한 경우: 리스트가 더 유리합니다. 리스트는 동적 크기를 제공하고 다양한 메서드를 통해 데이터를 쉽게 추가, 제거할 수 있습니다.
배열과 리스트 예제 코드
배열을 사용하는 예시
int[] ages = new int[] { 25, 30, 35, 40 };
for (int i = 0; i < ages.Length; i++)
{
Console.WriteLine("나이: " + ages[i]);
}
리스트를 사용하는 예시
List<string> names = new List<string> { "John", "Alice", "Bob" };
foreach (string name in names)
{
Console.WriteLine("이름: " + name);
}
'프로그래밍 언어 > C#' 카테고리의 다른 글
C#에서 배열과 리스트의 차이점 및 컬렉션 클래스 메모리 관리 방법 - C# 15 (0) | 2024.10.21 |
---|---|
C# 자료구조 가이드 딕셔너리(Dictionary)와 해시테이블(Hashtable) 사용법 및 장단점 (0) | 2024.10.17 |
C# 프로그래밍 언어에서 인터페이스와 추상 클래스 차이점 및 사용법 (0) | 2024.10.07 |
C# 상속과 다형성, 메서드 오버라이딩과 상속을 통한 다형성 이해 - C#11 (0) | 2024.10.05 |
C# 생성자와 소멸자, 객체 생성과 메모리 관리의 핵심 원리 - C#10 (0) | 2024.10.02 |