안녕하세요!
오늘은 C#의 배열에 대해 공부해요!
배열은 같은 성격의 데이터를 한번에 다룰때 필요해요.
인덱스를 톻해 각 요소에 접근할 수 있어요
그런데 배열의 인덱스는 0부터 시작하기 때문에
배열의 마지막 요소에 접근할때는 배열길이에서 1을 뺀 인덱스에 접근해야 한답니다!
이런 부분을 조금 쉽게 하기 위해
C# 8.0부터는 ^연산자가 생겼답니다.
^1은 마지막요소, ^2는 마지막에서 두번째에요!
자 다음으로는 유용하게 사용할 수 있는
"배열 분할하기"에 대해 알아 볼게요!
먼저, System.Range를 알아야하는데요
시작 인덱스와 마지막 인덱스를 이용해서 범위를 나타낸답니다.
..연산자를 통해서 객체를 생성하고
왼쪽에는 시작 인덱스, 오른쪽에는 마지막 인덱스가 와요!
참고로 시작 인덱스는 포함, 마지막 인덱스는 미포함입니다!!
class MainApp
{
static void PrintArray(System.Array array)
{
foreach (var e in array)
{
Console.Write(e);
}
Console.WriteLine();
}
static void Main(string[] args)
{
char[] array = new char['Z' - 'A' + 1];
for(int i = 0; i < array.Length; i++)
{
array[i] = (char)('A' + i);
}
PrintArray(array[..]);
PrintArray(array[5..]);
Range range_5_10 = 5..10;
PrintArray(array[range_5_10]);
Index last = ^0;
Range range_5_last = 5..last;
PrintArray(array[range_5_last]);
PrintArray(array[^4..^1]);
}
}
지금까지 1차원 배열만 다뤘는데요!
2차원 배열 사용법도 알아볼게요.
2차원 배열은 아래처럼 초기화하면 된답니다.
데이터_형식[,] 배열이름 = new 데이터_형식[2차원_길이, 1차원_길이];
만약 int[,] array = new int[2, 3];
이라는 코드가 있다면
이것은 길이 3짜리 1차원 배열을 2개 가지는 2차원 배열이에요!
예시코드 첨부할게요!
class MainApp
{
static void Main(string[] args)
{
int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4,5,6} };
for(int i = 0; i < arr.GetLength(0); i++)
{
for(int j = 0; j < arr.GetLength(1); j++)
{
Console.Write($"[{i}, {j}] : {arr[i, j]}");
}
Console.WriteLine();
}
Console.WriteLine();
int[,] arr2 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
for(int i = 0; i < arr2.GetLength(0); i++)
{
for(int j = 0; j < arr2.GetLength(1); j++)
{
Console.Write($"[{i}, {j}] : {arr2[i, j]}");
}
Console.WriteLine();
}
Console.WriteLine();
int[,] arr3 = { { 1, 2, 3 }, { 4, 5, 6 } };
for (int i = 0; i < arr3.GetLength(0); i++)
{
for (int j = 0; j < arr3.GetLength(1); j++)
{
Console.Write($"[{i}, {j}] : {arr3[i, j]}");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
이제 가변 배열에 대해 알아볼거에요.
가변배열은 다양한 길이의 1차원 배열을 여러개 가질 수 있는 배열이랍니다!
가변배열은 아래 형식으로 초기화할 수 있어요.
데이터_형식[][] 배열_이름 = new 데이터_형식[가변_배열의_용량][];
예시코드 첨부할게요.
class MainApp
{
static void Main(string[] args)
{
int[][] jagged = new int[3][];
jagged[0] = new int[5] { 1, 2, 3, 4, 5 };
jagged[1] = new int[] { 1, 2, 3 };
jagged[2] = new int[] { 100, 200 };
foreach (int[] arr in jagged)
{
Console.Write($"Length : {arr.Length}, ");
foreach(int e in arr)
{
Console.Write($"{e} ");
}
Console.WriteLine("");
}
Console.WriteLine("");
int[][] jagged2 = new int[2][]
{
new int[] { 1000, 2000},
new int[] {6,7,8,9 }
};
foreach (int[] arr in jagged2)
{
foreach(int e in arr)
{
Console.Write($"{e} ");
}
Console.WriteLine("");
}
Console.WriteLine("");
}
}
'C#' 카테고리의 다른 글
| [C#] 인덱서 (0) | 2024.10.07 |
|---|---|
| [C#] 컬렉션 (0) | 2024.10.07 |
| [C#] 프로퍼티 (1) | 2024.10.06 |
| [C#] 얕은 복사와 깊은 복사 - 설명 및 예제 코드 (0) | 2024.10.05 |
| [C#] ref out 키워드 의미 및 예시 코드 (4) | 2024.10.03 |