C#/C# 강좌

C# 강좌 - 배열, 배열 복사 ( Array, Array Copy )

DragonTory 2023. 2. 19. 12:31
반응형

C# 강좌 - 배열, 배열 복사 ( Array, Array Copy )

 

일반적으로 배열은 동일한 유형의 여러 변수를 배열 데이터 구조로 저장 하는 변수를 말 합니다.

배열 요소(배열을 차지 하고 있는 각각의 값)의 형식을 지정하고 요소 수를 지정 하여 배열을 선언합니다.

배열이 모든 유형의 요소를 저장 하도록 하려면 해당 배열 요소 형식을 object 형으로 지정할 수도 있습니다.

배열의 각 요소는 첫 번째 요소에 대해 0에서 시작하여 각 후속 요소에 대해 1씩 증가하는 정수인 인덱스로 식별됩니다.

다음과 같이 C#에서 배열을 선언할 수 있습니다.

type[] arrayName = new type[length];

여기서 type은 배열에 있는 요소의 데이터 형식이고 arrayName은 배열의 이름, length는 배열에 있는 요소의 수입니다.

예를 들어:

int[] numbers = new int[5];

이렇게 하면 5개의 요소가 있는 1차원 정수 배열이 생성됩니다.

다음과 같이 배열을 선언할 때 배열의 요소를 초기화할 수도 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };

이렇게 하면 5개의 요소가 있는 정수 배열이 생성되고 지정된 값으로 각 요소가 초기화됩니다.
 

string[] weekDays = new string[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };



다음과 같이 인덱스를 사용하여 배열의 요소에 액세스할 수 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };
int secondNumber = numbers[1]; // secondNumber is 2

  
또한, 인덱스를 사용하여 배열의 요소를 수정할 수도 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };
numbers[1] = 10; // changes the second element to 10

  
배열에는 배열의 요소 수를 가져오는 데 사용할 수 있는 Length 속성이 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // length is 5


for 루프를 사용하여 배열의 요소를 반복적으로 하나씩 읽어 올 수 있습니다.

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}

이렇게 하면 배열의 각 요소가 콘솔에 출력됩니다.

Examples:

// Declare an array of integers with 5 elements
int[] numbers = new int[5];

// Declare and initialize an array of integers with 5 elements
int[] numbers = { 1, 2, 3, 4, 5 };

// Declare and initialize a two-dimensional array of integers with 3 rows and 2 columns
int[,] matrix = { { 1, 2 }, { 3, 4 }, { 5, 6 } };

// Declare an array of strings with 3 elements
string[] names = new string[3];

// Declare and initialize an array of strings with 3 elements
string[] names = { "Alice", "Bob", "Charlie" };



C#의 Array 타입은 고정 크기이므로 배열이 생성되면 배열에서 요소를 추가하거나 제거할 수 없습니다.

필요에 따라 확장하거나 축소할 수 있는 동적 데이터 구조가 필요한 경우 List같은 컬렉션(Collection)을 대신 사용할 수 있습니다.

C# 배열 복사 (Array.Copy)

 C#에서는 Array.Copy 메서드를 사용하여 하나의 배열을 다른 배열로 복사할 수 있습니다.

이 메서드는 소스 배열, 대상 배열 및 복사할 요소 수의 세 가지 인수를 사용합니다.

 

int[] source = { 1, 2, 3 };
int[] destination = new int[3];

Array.Copy(source, destination, 3);

// destination now contains { 1, 2, 3 }

이 예제에는 3개의 요소가 있는 source라는 배열이 있습니다.
세 개의 요소가 있는 destination이라는 빈 배열도 있습니다.


그런 다음 Array.Copy 메서드를 사용하여 소스에서 대상으로 요소를 복사합니다.


Array.Copy의 세 번째 인수는 복사할 요소의 수이며, 이 경우 배열의 길이입니다.
Array.Copy 메서드가 호출된 후 대상 배열에는 소스 배열과 동일한 요소가 포함됩니다.
Array.Copy 메서드는 얕은 복사(shallow copy)를 수행합니다.

  • 얕은 복사(shallow copy) : 배열의 요소가 참조 형식인 경우 개체 자체가 아닌 참조가 복사됩니다.
  • 깊은 복사(deep copy) : 얕은 복사와 달리 참조 형식이어도 참조가 가르키는 값도 같이 복사 되어 완전한 데이터 자체가 복사 되는 방식으로 복사된 객체를 수정 하여도 원본 데이터에는 영향이 없습니다.
    그러나 얕은 복사의 경우 복사된 객체에서 참조하는 값을 수정 하면 원본 객체가 참조 하는 값도 (둘이 동일한 저장소이므로) 같이 변하게 됩니다.

 

 

 

반응형