비교
리스트는List<T>
는 요소가 추가되고 제거될 때 자동으로 크기를 조정할 수 있는 일반 컬렉션인 반면, 배열은 동일한 요소를 보유할 수 있는 고정 크기 순차 컬렉션입니다.
배열은 길이가 고정된 동일한 데이터 유형의 엄격한 자료형 컬렉션이다. 즉, 한번 생성되면 크기를 변공할 수 없습니다. 배열 요소는 0부터 시작해서 숫자 인덱스를 사용하여 접근 할 수 있습니다.
따라서 배열의 첫 번째 항목은 인덱스 0에 있고 두 번째 항목은 인덱스 1에 있는 식입니다.
숫자 배열 항목의 기본값은 0이고 참조 배열 요소의 기본값은 null입니다.
배열 클래스는 System.Array네임스페이스에서 사용할 수 있습니다. 배열을 정의하려면 대괄호 "[]"를 사용하고 배열이 보유할 데이터 유형(예: 정수, 문자열)을 지정하고 배열에 이름을 지정합니다.
// Create an integer array called 'intArray' with a length of 5
int[] intArray = new int[5];
// Alternatively, you can initialize the array with specific values like this:
int[] intArray = new int[] {10, 20, 30, 40, 50};
// Now, 'intArray' contains the following values at different indexes:
// Index 0: 10
// Index 1: 20
// Index 2: 30
// Index 3: 40
// Index 4: 50
using System;
namespace CSharpArrayExample
{
public class CSharpArrayExample
{
static void Main(string[] args)
{
// Declare an array
string[] fruitsName = { "Apple", "Orange", "Banana", "Grapes"};
// Access the elements of an Array using index
Console.WriteLine(fruitsName[0]); // Output: Apple
// Access the elements using for loop
for(int index = 0; index < fruitsName.Length; index ++)
{
Console.WriteLine(fruitsName[index]);
}
Console.ReadKey();
}
//Output:
// Apple
// Orange
// Banana
// Grapes
}
}
List<T>
: C#에서 List는 index 또는 loop를 통해 액세스할 수 있는 강력한 형식의 개체 컬렉션을 나타내는 데 사용되는 제네릭 형식이다. List 클래스는 System.Collection.Generic 네임스페이스에서 사용할 수 있다.
엄격한 자료형의 Object 컬렉션에서 요소를 검색, 정렬, 조작, 추가 및 제거할 수 있다.
C# List에는 요소가 추가되거나 제거될 때 동적으로 크기를 조정하는 기능과 같은 많은 추가적인 특징이 있다.
List 클래스와 이를 C#에서 사용하는 방법에 대해 자세히 알고 싶다면 이전 기사인 " C# List Class 를 확인하세요 .
다음은 일반적인 List<T>
를 선언하는 구문이다. List의 매개변수 T는 List의 항목 유형을 나타내며 int, long, string, 또는 사용자 정의 객체일 수 있다.
List<T> myList = new List<T>();
C# List<T>
예제다음은 C#의 List 사용 예제이다.
using System;
using System.Collections.Generic;
namespace CSharpListExample
{
public class CSharpArrayExample
{
static void Main(string[] args)
{
// string 타입의 일반 리스트 선언
List<string> fruitsName = new List<string>();
// List에 항목 추가
fruitsName.Add("Apple");
fruitsName.Add("Orange");
fruitsName.Add("Banana");
fruitsName.Add("Grapes");
// index를 사용하여 List의 요소에 액세스
Console.WriteLine(fruitsName[0]); // 출력: Apple
// for loop를 사용하여 리스트의 요소에 액세스
for(int index = 0; index < fruitsName.Count; index ++)
{
Console.WriteLine(fruitsName[index]);
}
Console.ReadKey();
}
// 출력:
// Apple
// Orange
// Banana
// Grapes
}
}
파라미터 | C# List | C# Array |
---|---|---|
1. 길이 | 항목이 추가되거나 제거될 때 동적으로 사이즈가 변한다. | 크기가 고정되어 있으므로, 동일한 데이터 유형의 고정된 개수의 요소만 저장할 수 있다. |
2. 네임스페이스 | System.Collection.Generic 네임스페이스에 속해있다. | System.Array 네임스페이스에 속해있다. |
3. 메모리 | 동적이며 무작위이다. List에 정의된 각 노드에는 자체 메모리 세트가 있으므로 List는 Array보다 더 많은 메모리를 차지한다. | 정적이며 연속적이다. 메모리 효율적이다. |
4. 활용 | 요소를 자주 추가하고 제거할 때 유용하다. | 변경 가능성이 없는 고정된 수의 요소가 있고 비순차적 방식으로 자주 액세스하려는 경우에 편리하다. |
5. 속도 | 실행 속도가 느리다. | 실행 속도가 더 빠르다. |
6. 메모리 관리 | 메모리 낭비가 없다. | 메모리 낭비는 Array의 문제점이다. Array에 할당된 많은 메모리 블록은 고정 크기 메모리가 할당된 후 새 항목이 추가될 때까지 사용되지 않은 상태로 유지된다. 또한 다른 프로세스에 할당할 수 없으므로 메모리 낭비가 발생한다. |
7. 메모리 구조 | 비연속 메모리 할당이 수행된다. 비연속 메모리 할당은 프로세스를 다양한 블록으로 분리하며, 이후 메모리 공간 가용성에 따라 메모리의 다른 주소 공간에 배치된다. 비연속 메모리 할당은 페이징 및 분할로 설명된다. | 연속 메모리 할당이 수행된다. 연속 메모리 할당 기술은 요구 사항에 따라 프로세스에 단일 연속 메모리 블록을 할당한다. 메모리 공간은 고정된 크기의 파티션으로 나뉘고 각 파티션은 하나의 프로세스에만 할당된다. |
정의:
유연성:
성능:
초기화:
네임스페이스:
인덱스 액세스:
요소 유형:
사용 시기: