프로그래밍 언어/C#

C# 배열과 리스트 선언 및 초기화 방법 자료구조 메모리 관리

eco7T 2024. 10. 14. 12:03
반응형

이번에는 C# 프로그래밍 언어를 처음 배우거나 배열과 리스트에 대한 기본 개념을 명확히 이해할 수 있도록 설명해 보겠습니다. 배열과 리스트는 C#에서 매우 중요한 자료구조로, 배열과 리스트의 선언, 데이터 추가 및 삭제 방법, 크기 조절 차이, 그리고 메모리 관리 측면에서의 장단점을 이해할 수 있도록 정리해 보겠습니다.

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` 반복문은 리스트의 모든 요소를 순차적으로 접근하기 때문에 리스트와 매우 잘 맞습니다.

 

 

  배열과 리스트의 차이점

  1. 크기
    • 배열은 크기가 고정되어 있으며, 초기화할 때 크기를 지정해야 합니다.
    • 리스트는 크기가 동적으로 변경될 수 있으며, 값을 추가할 때마다 크기가 자동으로 조정됩니다.
  2. 데이터 추가 및 제거
    • 배열은 크기가 고정되어 있어 데이터를 추가하거나 제거할 수 없습니다.
    • 리스트는 데이터를 자유롭게 추가하거나 제거할 수 있습니다.
  3. 메모리 사용
    • 배열은 고정된 메모리를 사용하므로 메모리 관리를 효율적으로 할 수 있습니다.
    • 리스트는 동적 메모리 할당을 통해 더 유연하게 데이터를 관리할 수 있지만, 메모리 사용량이 배열보다 클 수 있습니다.

 

 

  배열과 리스트의 선택 기준

  • 데이터 크기가 고정적이고, 성능이 중요한 경우: 배열을 사용하는 것이 좋습니다. 배열은 고정된 크기로 인해 메모리 사용이 효율적이고, 인덱스 기반의 빠른 접근 속도를 제공합니다.
  • 데이터 크기가 유동적이고, 관리가 중요한 경우: 리스트가 더 유리합니다. 리스트는 동적 크기를 제공하고 다양한 메서드를 통해 데이터를 쉽게 추가, 제거할 수 있습니다.

 

  배열과 리스트 예제 코드

배열을 사용하는 예시

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); }
반응형