본문 바로가기
카테고리 없음

C# 배열 크기변경

by AJAX하고싶다 2022. 11. 17.
반응형

C#의 1차원 배열, 2차원 배열의 크기 증가 및 감소 방법을 알아보자.

 

1차원 배열 크기 증가

//1차원 배열을 선언
//[ "A" , "B" ]의 구조를 가지는 배열
//[0] = "A"
//[1] = "B"
string [] t배열 = { "A", "B" };

//배열의 크기 확인 = 2
Console.WriteLine(t배열. Length);

//배열의 크기 변경. 5개로 변경
//변경된 배열은 [ "A", "B", null, null, null ]의 구조
//[0] = "A"
//[1] = "B"
//[2] = "C"
//[3] = "D"
//[4] = "E"
Array.Resize(ref t배열, 5);
t배열[2] = "C";
t배열[3] = "D";
t배열[4] = "E";

//배열의 크기 확인 = 5
Console.WriteLine(t배열. Length);

Array.Resize(ref 배열이름, 변경할 배열의 크기)는 "1차원 배열"에서만 사용 가능하다

 

 

1차원 배열 크기 감소

//1차원 배열을 선언
//[ "A", "B", "C", "D", "E" ]의 구조를 가지는 배열
//[0] = "A"
//[1] = "B"
//[2] = "C"
//[3] = "D"
//[4] = "E"
string[] t배열 = { "A", "B", "C", "D", "E" }; 

//배열의 크기 확인 = 5
Console.WriteLine(t배열. Length);

//배열의 크기 변경. 2개로 변경
//크가가 감소된 배열은 [ "A", "B" ]의 구조
//[0] = "A"
//[1] = "B"
Array.Resize(ref t배열, 2);


//배열의 크기 확인 = 2
Console.WriteLine(t배열. Length);

Array.Resize 구문은 "1차원 배열"에서만 사용 가능하다.
배열이 감소될 때 선언된 공간 속의 값은 사라지며, 크기를 다시 늘려도 값은 복구되지 않는다.

 

 

2차원 배열 크기증가

//전역 변수 2차원 배열 선언
string [,] t배열 = new String[,] { };
string [,] t배열 back;

int t배열 row = t배열. GetLength(0);  //현재 배열의 행의 개수

//배열 행의 크기가 0인 경우
if (t배열. GetLength(0) == 0)
{
	//2차원 배열의 크기 증가
    t배열 = new string [t배열 row + 1, 2];
    
    //증가된 배열의 값 입력
    t배열[t배열 row, 0] = t배열 row.ToString();
    t배열[t배열row, 1] = t배열row.ToString();
}

//배열 행의 크기가 0이 아닌 경우
else
{
    //기존 배열을 백업 배열 변수에 입력
    //배열 크기 변경 시 경우 기존 배열의 데이터가 초기화됨
    t배열 back = t배열;

    //기존 배열 크기 증가
    t배열 = new string [t배열 row + 1, 2];    

    //백업 배열에 있는 기존 배열 데이터 이동
    for (int i = 0; i < t배열 row; i++)
    {
        t배열[i, 0] = t배열 back [i, 0];
        t배열[i, 1] = t배열back[i, 1];
    }

    //증가된 배열 row 값 입력
    t배열[t배열 row, 0] = t배열 row.ToString();
    t배열[t배열row, 1] = t배열row.ToString();
}

 

2차원 배열 크기감소

//2차원 배열 선언
//[{ "A","1" },{"B","2"}, {"C","3"},{"D","4"},{"E","5"}] 구조의 배열
//[0][0] = "A"
//[0][1] = "1"
//[1][0] = "B"
//[1][1] = "2"
//[2][0] = "C"
//[2][1] = "3"
//[3][0] = "D"
//[3][1] = "4"
//[4][0] = "E"
//[4][1] = "5"
// A  1
// B  2
// C  3
// D  4
// E  5
string [,] j배열 = new String [5,2]{{"A","1"},{"B","2"},{"C", "3"},{"D","4"},{"E","5"}};
string [,] j배열 back;

//기존 배열을 백업 배열 변수에 입력
//배열 크기 변경 시 경우 기존 배열의 데이터가 초기화됨
j배열 back = j배열;

//현재 배열의 행의 개수 확인 = 5
int j배열 row = j배열.GetLength(0);

//배열의 행 감소 = 4
j배열row = j배열row - 1;


//기존 배열 크기 감소
j배열 = new string [j배열 row, 2];


//백업 배열에 있는 기존 배열 데이터 이동
for (int i = 0; i < j배열 row; i++)
{
    j배열[i, 0] = j배열 back [i, 0];
    j배열[i, 1] = j배열back[i, 1];
}

//배열 감소 완료
//[0][0] = "A"
//[0][1] = "1"
//[1][0] = "B"
//[1][1] = "2"
//[2][0] = "C"
//[2][1] = "3"
//[3][0] = "D"
//[3][1] = "4"
// A  1
// B  2
// C  3
// D  4
반응형

댓글