
오늘 과제를 진행하던 중 문제가 발생하여 튜터님을 찾아갔는데, 얕은 복사와 깊은 복사에 대해
언급해주셨고, 그것을 한번 찾아보고 문제를 해결해보는 것을 추천하셨다.
정말 다행히도 문제는 해결 되었고, 그 내용에 대해 한번 정리해보았다.
class Number()
{
public int a;
public int b;
}
static void Main(string[] args)
{
Number number1 = new Number();
Number number2 = number1;
number1.a = 1;
Console.WriteLine($"number1 int a = {number1.a}");
Console.WriteLine($"number2 int a = {number2.a}");
}
위 코드에서 number1.a만 1로 변경하려고 했지만, number1, number2는 같은 주소를
가리키고 있기 때문에 number2.a도 1로 변경된다.

class Number()
{
public int a;
public int b;
public Number Copy()
{
Number number = new Number();
number.a = a;
number.b = b;
return number;
}
}
static void Main(string[] args)
{
Number number1 = new Number();
Number number2 = number1.Copy();
number1.a = 1;
Console.WriteLine($"number1 int a = {number1.a}");
Console.WriteLine($"number2 int a = {number2.a}");
}
위의 코드에서는 Copy라는 메서드를 통해 새로 생성된 인스턴스에 있던 값들을 그대로 복사해준다.
이렇게 되면 number1 값이 바뀌더라도 number2의 값은 유지가 된다.

팀 과제 관련 글에서 작성했듯이 몬스터가 중복되어 타격되는 문제가 생겼는데,
(킹갓)염예찬 튜터님의 조언을 받고 문제를 해결하게 되었다.
Monster newMonster = new Monster(monsters[stageMonster].Level,
monsters[stageMonster].Name,
monsters[stageMonster].Hp,
monsters[stageMonster].Attack,
false);
새로 객체를 생성하여 그전에 있던 값을 넣어주었고, 발생했던 문제점은 단번에 해결되었다.
이 문제로 팀원들과 내 정수리가 많이 뜨거웠었는데 다행히도 해결되어 속이 뻥 뚫렸다.