C#

out, ref 키워드

잼잼재미 2023. 11. 8. 17:18

● out
 - 메서드에서 반환 값을 매개변수로 전달하는 경우에 사용
 - 메서드에서 값을 반환하는 것이 아니라, 매개변수를 이용하여 값을 전달

// out 키워드 사용 예시
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
 - 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용

// ref 키워드 사용 예시
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


●  주의 사항
1. 값의 변경 가능성
 - ref 매개변수를 사용하면 메서드 내에서 해당 변수의 값을 직접 변경
 - 예기치 않은 동작에 주의 필요
2. 성능 이슈
 - ref 매개변수는 값에 대한 복사 없이 참조형식으로 메서드 내에서 직접 접근할 수 있기 때문에 빠름
 - 그러나 너무 많은 매개변수를 ref로 전달하면 코드의 가독성이 떨어지고 유지보수가 어려워질 수 있음
3. 변수 변경 여부 주의
 - out 매개변수는 메서드 내에서 반드시 값을 할당해야 함
 - 따라서 out 매개변수를 전달할 때 이전 값이 유지되지 않으므로 주의

'C#' 카테고리의 다른 글

열거형 (Enums)  (0) 2023.11.10
인터페이스(Interface)  (0) 2023.11.09
제너릭  (0) 2023.11.08
오버로딩(overloading)과 오버라이딩(overriding)  (0) 2023.11.08
가상 메서드 (Virtual), 추상 메서드(Abstract)  (2) 2023.11.08