기초 메모지

C# - ref, out 언제 사용할까? 본문

Languages/C#

C# - ref, out 언제 사용할까?

라큐브 2022. 6. 30. 15:12

ref

범위 밖에 있는 변수의 값을 수정할 때 사용합니다.

기본적을 매개 변수(Prameter)는 값 타입(Value Type)을 사용하기 때문에 메서드 밖에 있는 값이 변경되는 일은 없습니다.

ref로 참조 타입(Reference Type)으로 변경하면 인자로 주어진 변수의 주소 값을 참조하게 됩니다. 

인자로 주어진 변수 값과 매개 변수는 같은 주소 값을 가지기 때문에 실질적인 값을 공유하게 됩니다. 
그 결과 실질적인 값을 변경한다면 참조하고 있던 변수나 매개 변수 값은 같은 값을 참조하게 됩니다. 

int Sum = 0;

Add(int 2, int 10, ref Sum);
ConsoleWriteLine(Sum)
// Sum = 12
void Add(int x, int y, ref Sum)
{
  Sum = x + y;
}

out

메서드 내에서 생성된 값을 반환할 때 사용하거나 값을 두개 이상 반환할 때 사용합니다.

double Pow, Sqrt;

Add(2, 16, out Pow, out Sqrt);
Console.WriteLine("Pow : " + Pow + ", Sqrt : " + Sqrt);
// Pow : 1024, Sqrt : 4

void Add(int x, int y, out double xValue, out double yValue)
{
    xValue = Math.Pow(x, 10); 
    yValue = Math.Sqrt(y);
}

 

반응형
Comments