프로그래밍/C#
[C#] out, ref 키워드 살펴보기
NIA1995
2020. 9. 24. 20:31
일반적으로 인자로 오는 변수들은 메모리에서 값을 복사해서 가져오기 때문에 함수 안에서 인자의 원본 값을 변경하지 못합니다. 그러나 out 키워드, ref 키워드는 메모리의 주소를 복사하여 변수를 직접 가리킵니다. 즉, 함수 안에서 인자 원본 값을 수정할 수 있게 됩니다.
따라서 기본적으로 ref, out 키워드 둘 다 C++에서 참조자의 역할을 하게 됩니다. 여기서 out 키워드는 중요한 하나의 특징을 더 가지고 있는데 out 키워드가 붙은 인자는 해당 함수가 끝나기 전에 값을 할당 받아야 합니다.
이를 간단한 예제를 통해 활용하는 방법을 알아보겠습니다. / 21.01.01 수정
public class ItemData
{
public int buffValue;
public ItemData(int buffValue)
{
this.buffValue = buffValue;
}
public void AddValue(ref int v)
{
v += buffValue;
}
}
public class Character
{
public int agility;
public int intellect;
public int stamina;
public int strength;
……….
}
예를 들어서 아이템이 캐릭터의 특정 스탯을 올려준다고 가정할 때 캐릭터의 다양한 스탯마다 스탯을 증가하는 함수를 만들어 줄 수는 없습니다. 이 때 ref 키워드를 사용하면 해당 메모리에 접근하여 값을 수정할 수 있게 됩니다. 따라서 ref 인자로 원하는 스탯만 넣어준다면 아이템의 효과만큼 스탯을 증가시킬 수 있습니다.
- 참조
1. 인생 유니티 교과서