값 형식의 변수를 참조 형식처럼 값을 변경해줄 때 사용할 수 있다.
out
키워드는 메서드에서 반환 값을 매개변수로 전달하는 경우에 사용한다.ref
키워드는 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용한다.// out 키워드 사용 예시
// Divide()를 진행하기 위해 받은 매개변수의 값을 변경하고 반환한다.
void Divide(int a, int b, out int quotient, out int remainder)
{
quotient = a / b;
remainder = a % b;
}
int quotient, remainder;
Divide(7, 3, out quotient, out remainder);
Console.WriteLine($"{quotient}, {remainder}"); // 출력 결과: 2, 1
// ref 키워드 사용 예시
// Swap()을 진행하기 위해 받은 매개변수 값을 변경한다.
void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
int x = 1, y = 2;
Swap(ref x, ref y);
Console.WriteLine($"{x}, {y}"); // 출력 결과: 2, 1
ref
매개변수를 사용하면 메서드 내에서 해당 변수의 값을 직접 변경할 수 있다. 이는 예기치 않은 동작을 초래할 수도 있으므로 주의해야 한다.ref
매개변수는 값에 대한 복사 없이 메서드 내에서 직접 접근할 수 있기 때문에 성능상 이점이 있으나, 너무 많은 매개변수를 ref
로 전달하면 가독성이 떨어지고 유지보수가 어려워질 수 있다.out
매개변수는 메서드 내에서 반드시 값을 할당해야 한다. 따라서 out
매개변수를 전달할 때 해당 변수의 이전 값이 유지되지 않으므로 주의해야 한다.