C# 매개변수 활용: ref, out, in, params

C# 매개변수 활용: ref, out, in, params

이전 글에서는 C#의 함수와 메서드에 대한 기본적인 개념과 작성 방법을 알아보았습니다. 이번 글에서는 C#의 특별한 매개변수 키워드들인 ref, out, in, params에 대해 상세하게 알아보겠습니다.

1. ref 키워드

ref 키워드는 메서드에 변수를 참조로 전달할 때 사용됩니다. 메서드 내에서 이 변수의 값을 변경하면 호출자에 있는 원본 변수의 값도 변경됩니다.

1.1 ref 예제

public void ModifyValue(ref int value)
{
    value *= 2;
}
int originalValue = 10;
ModifyValue(ref originalValue);
Console.WriteLine(originalValue); // 결과: 20

2. out 키워드

out 키워드는 초기화되지 않은 변수를 메서드에 전달할 때 사용됩니다. 메서드는 이 변수에 값을 할당해야 하며, 이렇게 할당된 값을 호출자에게 반환합니다.

2.1 out 예제

public void GetDimensions(out int width, out int height)
{
    width = 10;
    height = 20;
}
int w, h;
GetDimensions(out w, out h);
Console.WriteLine($"Width: {w}, Height: {h}"); // 결과: Width: 10, Height: 20

3. in 키워드

in 키워드는 변수를 참조로 메서드에 전달할 때 사용되지만, 그 변수의 값을 메서드 내에서 변경할 수 없습니다. 따라서 읽기 전용 참조로 사용됩니다.

3.1 in 예제

public void DisplayValue(in int value)
{
    Console.WriteLine($"Value is: {value}");
    // value = 50;  // 이렇게 값을 변경하려고 하면 컴파일 에러가 발생합니다.
}
int myValue = 30;
DisplayValue(in myValue); // 결과: Value is: 30

4. params 키워드

params 키워드를 사용하면 가변 개수의 인수를 하나의 매개변수로 전달할 수 있습니다. 이 매개변수는 배열 형태로 전달됩니다.

4.1 params 예제

public int CalculateSum(params int[] numbers)
{
    int sum = 0;
    foreach (int num in numbers)
    {
        sum += num;
    }
    return sum;
}
int result = CalculateSum(1, 2, 3, 4, 5);
Console.WriteLine(result); // 결과: 15

5. 결론

ref, out, in, params 키워드를 통해 C#은 다양한 방식으로 메서드에 데이터를 전달할 수 있게 해줍니다. 이러한 키워드들을 활용하여 유연하고 효과적인 프로그래밍을 할 수 있습니다.

참고 자료

함께 보면 좋은 이전 게시글

위로 스크롤