본문 바로가기

Programming Language/C#

[C#] 메서드 파라미터 ( ref, out )

  • 메서드에 파라미터를 전달할때 사용되는 키워드로, 메서드 호출 시에 인수를 전달하는 방식을 나타낸다.

1. ref :


  • 변수를 전달하고, 해당 변수를 읽고 쓸 수 잇는 양방향 전달이 가능하다. 메서드 내에서 전달된 변수를 수정하면 호출자에게 반영된다.
  • ref 가 사용되는 인수는 반드시 초기화된 변수를 전달해야 한다.
class Program
{
    static void ModifyValue(ref int x)
    {
        x = x * 2;
    }

    static void Main()
    {
        int number = 5;
        ModifyValue(ref number);
        Console.WriteLine(number); // 출력: 10
    }
}

2. out :


  • 메서드에서 여러 값을 반환하는 용도로 사용된다.
  • out 이 사용되는 인수는 초기화 될 필요가 없이 메서드 내에서는 해당 변수를 반드시 초기화 하고 값을 할당해야 한다.
class Program
{
    static void Divide(int dividend, int divisor, out int quotient, out int remainder)
    {
        quotient = dividend / divisor;
        remainder = dividend % divisor;
    }

    static void Main()
    {
        int resultQuotient, resultRemainder;
        Divide(10, 3, out resultQuotient, out resultRemainder);
        Console.WriteLine($"Quotient: {resultQuotient}, Remainder: {resultRemainder}");
        // 출력: Quotient: 3, Remainder: 1
    }
}
namespace MethodParameter
{
    internal class Program
    {
        // out
        static void UsingOut(out int y)
        {
            // 반드시 초기화 후에 값을 할당해야 함
            y = 42;
        }

        static void Main(string[] args)
        {
            //out
            int b;
            UsingOut(out b);
            Console.WriteLine(b); // 42
        }
    }
}

'Programming Language > C#' 카테고리의 다른 글

[C#] Event  (0) 2023.12.27
[C#] Delegate(대리자)  (0) 2023.12.27
[C#] Nullable 타입 ( ?, ?? )  (1) 2023.12.27
[C#] 네임스페이스  (0) 2023.12.27
[C#] 예외처리(Exception) [ try, catch, finally ]  (0) 2023.12.27