배열의 복사(Deep/Shallow)
2020. 4. 16. 17:54ㆍC#/수업내용
1. 배열을 대입 형태로 복사 : Deep Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Study_010
{
class App
{
public App()
{
int[] a = new int[5];
int[] b = new int[3];
for (int i = 0; i < 3; i++)
{
b[i] = i;
}
a = b; // deep copy
b[1] = 1000;
}
}
}
|
[a = b 복사 전]
a = {0, 0, 0, 0, 0}
b = {0, 1, 2}
[a = b 복사 후]
a = {0, 1, 2}
b = {0, 1, 2}
[b[0] = 1000으로 변경한다면]
a = {1000, 1, 2}
b = {1000, 1, 2}
2. Array.Copy()와 같은 메소드를 이용하여 복사 : Shallow Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Study_010
{
class App
{
public App()
{
int[] a = new int[5];
int[] b = new int[3];
for (int i = 0; i < 3; i++)
{
b[i] = i;
}
Array.Copy(b, a, b.Length); // shallow copy
b[1] = 1000;
}
}
}
|
<Array.Copy() 메소드로 복사가 이루어지는 경우> - Deep Copy
[a = b 복사 전]
a = {0, 0, 0, 0, 0}
b = {0, 1, 2}
[a = b 복사 후]
a = {0, 1, 2, 0, 0}
b = {0, 1, 2}
[b[0] = 1000으로 변경한다면]
a = {0, 1, 2, 0, 0}
b = {1000, 1, 2}
-> 각각의 객체가 어떻게 다루어지는지 인지해야 할 필요가 있음
3. C++와 동일하게 조사식에서 &를 이용하여 주소값을 찍어볼 수 있다고 함.
나중에 꼭 확인해보자 고양이랑 맨날 쳐 놀지말고 진혁아
'C# > 수업내용' 카테고리의 다른 글
Json을 이용하여 Excel 파일을 역직렬화 하기 (0) | 2020.04.21 |
---|---|
배열 - 캐릭터의 무기 습득 및 장착 (0) | 2020.04.20 |
스타크래프트 - 배럭 (0) | 2020.04.14 |
인벤토리에 아이템 넣기 (0) | 2020.04.14 |
아이템 선택 및 강화 (0) | 2020.04.09 |