
배열이란 단어가 익숙하지 않지만, 구조를 보고 몇번 사용해보니 감이 잡혔다.
개인적으로 배열을 key가 index인 table 타입으로 이해했다.
하지만 C#에서의 배열은 MSW의 table과 몇가지 차이점이 있다.
배열의 크기는 한번 설정되면 변경할 수 없다.
배열에 저장할 값의 타입은 배열과 같아야 한다.
배열의 index는 0부터 시작한다.
즉 C#의 배열은 크기가 고정되어 있고, 동일한 타입의 값들을 저장하는 것이라고 볼 수 있다.
배열을 초기화하는 방법은 크게 2가지가 있다.
int[] iTable1 = { 1, 2, 3 };
string[] sTable1 = { "A", "B", "C" };
배열을 선언하면서 값을 넣어줄 수 있다.
배열의 크기가 자동으로 설정된다.
int[] iTable2 = new int[3]; // 3은 배열의 크기
string[] sTable2 = new string[3];
배열의 크기를 지정해줘야 한다.
iTable2 = new int[5];
sTable2 = new string[5];
MSW에서는 배열의 크기를 신경쓰지 않았지만,
C#에서는 한번 생성한 배열의 크기는 변경할 수 없다.
하지만 위와 같이 새로운 배열을 넣어주면 다른 크기의 배열로 바꿀 수 있다.
새로운 배열이기에 기존에 있던 값(value)들은 사라지게 된다.
int[] iTable3 = new int[5];
string[] sTable3 = new string[5];
배열을 선언하고 값을 넣지 않으면,
// 각 데이터 타입별 기본 값들
int = 0
float = 0.0
bool = false
char = \0
string = null
object = null
자동으로 데이터 타입에 맞는 기본값으로 채워진다.
string[] sTable1; // 1차원 배열
string[,] sTable2; // 2차원 배열
string[,,] sTable3; // 3차원 배열
,를 추가할 때마다 다차원 배열이 생성된다.
하지만 3차원 배열을 넘는 배열을 사용할지는 의문이 든다.
string[] array1D = new string[3]{ "1", "2", "3" };
string[,] array2D = new string[3, 4]
{
{ "1", "2", "3", "4"},
{ "5", "6", "7", "8"},
{ "9", "10", "11", "12"},
};
string[,,] array3D = new string[2, 3, 4]
{
{
{ "1", "2", "3", "4" },
{ "5", "6", "7", "8" },
{ "9", "10", "11", "12" }
},
{
{ "13", "14", "15", "16" },
{ "17", "18", "19", "20" },
{ "21", "22", "23", "24" }
}
};
1차원 배열은 행(row)
2차원 배열은 행(row)과 열(column)
3차원 배열은 깊이(depth)와 행(row)과 열(column)
배열은 생성할 때 크기를 지정해야 하지만,
이미 생성된 배열의 크기를 알고 싶다면 어떻게 해야할까?
string[] array1D = new string[3];
string[,] array2D = new string[3,4];
string[,,] array3D = new string[2,3,4];
Array클래스의 length프로퍼티와 GetLength(i)함수를 이용하면 된다.
// 배열의 크기 (깊이 x 행 x 열)
Console.WriteLine(array1D.Length); // 3
Console.WriteLine(array2D.Length); // 12
Console.WriteLine(array3D.Length); // 24
// 깊이 or 행 or 열의 크기
Console.WriteLine(array1D.GetLength(0)); // 행의 크기 3
Console.WriteLine(array2D.GetLength(0)); // 행의 크기 3
Console.WriteLine(array2D.GetLength(1)); // 열의 크기 4
Console.WriteLine(array3D.GetLength(0)); // 깊이의 크기 2
Console.WriteLine(array3D.GetLength(1)); // 행의 크기 3
Console.WriteLine(array3D.GetLength(2)); // 열의 크기 4
주의할 점은 2차원 배열과 3차원 배열에서 행이나 열을 구할 때,
GetLength(i)함수에서 index를 신경써야 한다.
MSW의
table과 비슷한 느낌이라,
배열의 크기나, 선언 방식만 신경쓰면 크게 어렵진 않는 것 같다.