C# 배열 자습서: 생성, 선언, 초기화

⚡ 스마트 요약

C# 배열은 동일한 데이터 형식을 공유하는 고정 크기의 요소들을 하나의 변수 이름으로 저장합니다. 각 요소는 0부터 시작하는 인덱스에 위치하므로, 값의 선언, 초기화 및 접근이 빠르고 예측 가능합니다.

  • 📌 정의: 배열은 하나의 변수를 통해 접근할 수 있는 인덱스 위치에 동일한 유형의 여러 값을 저장합니다.
  • ✅ 선언: 대괄호 뒤에 데이터 형식과 이름을 붙이면 배열이 선언됩니다. 예를 들어 Int32[] values와 같습니다.
  • 🔢 초기화 : 새로운 키워드는 크기를 설정하고, 그러면 각 인덱스는 values[0]=1과 같은 값을 받습니다.
  • 🔍 액세스 : 0부터 시작하는 인덱싱은 모든 요소를 ​​읽거나 쓰므로 첫 번째 항목은 values[0]이고 카운팅은 0부터 시작합니다.
  • 🔁 반복: foreach 루프는 인덱스 없이 모든 요소를 ​​순회하므로 대규모 배열에서 범위를 벗어난 오류를 방지합니다.
  • 🤖 AI 지원: GitHub Copilot은 배열 관련 기본 코드를 생성하는 반면, ML.NET은 숫자 배열을 머신러닝 모델의 특징으로 로드합니다.

C# 배열

C#의 배열이란 무엇입니까?

배열은 컬렉션이나 일련의 요소를 저장하는 데 사용됩니다. 이러한 요소는 동일한 유형입니다.

예를 들어 정수 값의 배열이 있는 경우 배열은 [1, 2, 3, 4]와 같은 값의 컬렉션일 수 있습니다. 여기서 배열의 요소 수는 4입니다.

배열은 동일한 유형의 값 모음을 저장하려는 경우 유용합니다. 그래서 선언하는 대신 변수 모든 요소에 대해 하나의 변수만 선언할 수 있습니다.

이 변수는 배열의 요소를 저장하는 역할을 하는 배열 또는 요소 목록을 가리킵니다.

C#에서 배열을 사용하여 작업하는 방법을 살펴보겠습니다. 이 예에서는 정수 배열을 선언하고 이에 따라 작업하겠습니다.

아래 코드는 모두 Program.cs 파일에 만들어집니다.

단계 1) 배열 선언 – 첫 번째 단계는 배열을 선언하는 것입니다. 아래 코드 예제를 통해 이를 어떻게 달성할 수 있는지 살펴보겠습니다.

C#의 배열

Code 설명:-

  1. 첫 번째 부분은 데이터 형식. 배열에 사용되는 요소의 유형을 지정합니다. 따라서 우리의 경우에는 정수 배열을 생성합니다.
  2. 두 번째 부분 [ ]은 배열의 순위를 지정합니다. (순위는 배열에 포함될 요소 수를 지정하는 자리 표시자입니다.)
  3. 다음은 우리의 경우 'values'인 배열의 이름입니다. 녹색 구불구불한 밑줄이 보이니 걱정하지 마세요. 그것은 단지 .Net에서 배열을 선언했지만 어디에서나 사용하지 않는다고 말하는 것입니다.

단계 2) 다음 단계는 어레이를 초기화하는 것입니다. 여기서는 배열이 보유할 값의 수를 지정하겠습니다. 또한 배열의 각 요소에 값을 할당할 예정입니다.

C#의 배열

Code 설명:-

  1. 첫째, 배열이 보유할 요소의 개수를 3으로 설정합니다. 즉, 대괄호 안에서는 배열이 3개의 요소를 보유한다는 것을 나타냅니다.
  2. 다음으로 배열의 각 요소에 값을 할당합니다. 변수 이름과 배열에서의 인덱스 위치를 지정하여 값을 할당할 수 있습니다. 예를 들어 `values[0]`은 배열의 첫 번째 위치에 값을 저장한다는 의미입니다. 마찬가지로 두 번째 위치에 접근하려면 `values[1]`과 같은 표기법을 사용하고, 그 이후로도 계속해서 같은 방식으로 값을 할당합니다.

주의 사항: – 배열에서 인덱스 위치는 0부터 시작합니다.

단계 3) 이제 콘솔에 배열의 개별 요소를 표시해 보겠습니다. 이를 달성하기 위해 아래 코드를 추가해 보겠습니다.

C#의 배열

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code 설명:-

이는 Console.WriteLine 메서드를 사용하여 요소의 각 값을 콘솔로 보내는 간단한 부분입니다.

다시 한 번, 인덱스 위치와 함께 배열 변수 이름을 사용하여 각 요소에 액세스하고 있습니다.

위 코드를 올바르게 입력하여 프로그램을 실행하면 다음과 같은 출력이 표시됩니다.

출력:

C#의 배열

출력에서 배열의 모든 값이 콘솔에 표시되는 것을 볼 수 있습니다.

C#에서 foreach를 사용하여 배열을 순회하는 방법

인덱스를 이용해 각 요소를 읽는 방식은 효과적이지만, 배열에 많은 값이 저장될 경우 매우 번거로워집니다. foreach 루프는 배열의 모든 요소를 ​​순서대로 방문하는 더 깔끔한 방법을 제공합니다. trac인덱스 변수를 직접 생성하세요.

foreach 문은 배열의 각 항목을 한 번에 하나씩 가져와 루프 변수에 복사합니다. 그런 다음 루프 본문 내에서 해당 변수를 사용합니다. 루프는 마지막 요소에서 자동으로 멈추기 때문에 foreach를 사용하면 배열의 끝을 지나쳐 읽어버리는 위험을 방지할 수 있습니다.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

위 예제는 세 개의 정수로 이루어진 배열을 선언하고 초기화한 다음, foreach 루프를 사용하여 배열을 순회합니다. 각 순회마다 변수는 초기화됩니다. 목 다음 값을 받으면 Console.WriteLine을 사용하여 출력합니다. 출력 결과는 1, 2, 3이라는 숫자가 각각 다른 줄에 표시됩니다.

배열을 사용하는 foreach 루프에서 기억해야 할 핵심 사항:

  • 루프 변수는 읽기 전용이므로 값을 변경할 때보다는 값을 읽을 때 foreach를 사용하는 것이 가장 좋습니다.
  • 보는 동안 요소를 수정하려면ping대신 인덱스를 사용하는 for 루프를 사용하세요.
  • foreach는 1차원 배열, 다차원 배열 및 반복을 지원하는 모든 컬렉션과 함께 작동합니다.

C# 다차원 배열

지금까지 살펴본 배열은 단일 차원 배열로, 단순한 값 목록을 저장합니다. C#은 행과 열의 격자 형태로 요소를 배열하는 다차원 배열도 지원합니다. 2차원 배열은 가장 일반적인 형태로, 행렬, 게임판, 표와 같은 데이터에 적합합니다.

2차원 배열은 대괄호 안에 쉼표를 넣어 선언합니다. 쉼표가 하나씩 추가될 때마다 차원이 하나씩 늘어나므로, int[,]는 2차원 배열이고 int[,,]는 3차원 배열입니다. 배열의 요소는 각 차원의 인덱스를 사용하여 접근할 수 있습니다.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

여기서 `matrix` 배열은 두 행과 두 열을 갖습니다. `matrix[0, 0]`은 1을 반환하고, `matrix[1, 1]`은 4를 반환합니다. 배열의 차원 수는 선언 시 고정되지만, 각 차원의 크기는 배열 생성 시 설정됩니다.

C# 불규칙 배열

불규칙 배열은 요소 자체가 배열인 배열입니다. 직사각형 다차원 배열과 달리 각 내부 배열의 길이가 서로 다를 수 있기 때문에 불규칙 배열을 '배열의 배열'이라고도 부릅니다. 이러한 유연성은 각 행에 서로 다른 개수의 값이 저장될 때 유용합니다.

가변 배열은 두 쌍의 대괄호를 사용하여 선언한 다음, 각 내부 배열을 별도로 생성합니다. 다음 예제는 첫 번째 행에 세 개의 값, 두 번째 행에 두 개의 값을 저장하는 가변 배열을 생성합니다.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

jagged[0][2] 표현식은 첫 번째 행의 세 번째 요소인 3을 읽고, jagged[1][1] 표현식은 두 번째 행의 두 번째 요소인 5를 읽습니다. 각 행이 별도의 배열이기 때문에 행 길이가 다를 때 jagged 배열은 메모리를 효율적으로 사용하지만 모든 내부 배열을 초기화하는 추가 단계가 필요합니다.

자주 묻는 질문

C# 배열의 Length 속성은 배열에 있는 요소의 총 개수를 반환합니다. 예를 들어, 요소가 세 개인 배열의 경우 values.Length는 3을 반환합니다. 다차원 배열의 경우 GetLength(dimension)은 각 차원의 크기를 반환합니다.

AC# 배열은 생성 시 크기가 고정되는 반면, List는 크기가 동적으로 증가하거나 감소합니다. 배열은 고정된 데이터에는 더 빠르고 오버헤드가 적은 반면, List는 런타임에 요소 개수가 변경되는 컬렉션에 더 적합합니다.

표준 C# 배열은 선언된 단일 형식의 요소만 저장하므로 형식을 혼합하여 사용할 수 없습니다. 서로 다른 형식의 요소를 저장하려면 object[] 배열을 선언하거나 ArrayList와 같은 컬렉션을 사용해야 하지만, 두 방법 모두 컴파일 타임 형식 안전성을 희생해야 합니다.

정적 Array.Sort 메서드는 C# 배열의 요소를 제자리에서 오름차순으로 정렬합니다. 배열을 Array.Sort(values)에 전달하고 Array를 사용하세요.Reverse 그 후에는 내림차순으로 정렬합니다. 정렬은 숫자, 문자열 및 기타 유사한 유형에 적용됩니다.

Array.Copy 메서드는 한 배열의 특정 요소 범위를 다른 배열로 복제하는 반면, Clone 메서드는 배열 전체를 얕은 복사본으로 만듭니다. 한 배열 변수를 다른 배열 변수에 할당하는 것은 참조만 복사하는 것이지, 기본 요소는 복사하지 않습니다.

IndexOutOfRangeException은 코드가 존재하지 않는 배열 위치에 접근할 때 발생합니다. 예를 들어, 세 개의 요소를 가진 배열에서 values[5]에 접근하는 경우가 있습니다. C# 배열은 0부터 시작하므로 유효한 인덱스는 0부터 배열 길이에서 1을 뺀 값까지입니다. 항상 먼저 인덱스의 유효성을 검사해야 합니다.

예. GitHub Copilot은 Visual Studio 내의 주석이나 메서드 이름에서 배열 선언, 초기화 및 반복문 로직을 제안합니다. VS Code. RevCopilot은 오차가 발생하거나 범위를 벗어날 수 있으므로, 올바른 크기 조정 및 인덱스 범위에 대한 각 제안을 검토하십시오.

ML.NET은 특징 벡터와 모델 입력을 C# 배열, 일반적으로 float[] 배열로 표현합니다. 학습 데이터는 배열 또는 스팬에 로드되고, 예측 결과는 점수 배열을 반환합니다. 배열의 고정된 크기와 빠른 인덱싱 덕분에 머신 러닝 파이프라인에서 효율적으로 사용할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.