Home Full Site
C# 12: ref readonly 파라미터 (in)

이 항목은 C# 12에서 새로 생겼다기보다는, C# 7.2부터 있던 in의 활용을 C# 12 문맥에서 다시 정리한 것이다. in은 읽기 전용(readonly) ref 파라미터를 선언할 때 사용한다. in으로 선언된 파라미터는 메서드 내부에서 수정할 수 없는 읽기 전용으로 사용되는데, 파라미터명에 값을 재할당할 수 없고, 또한 파라미터의 필드나 속성 값을 변경할 수 없다. in 파라미터는 전달되는 값이 크거나 복사 비용이 높은 타입을 메서드에 전달할 때 유용하다.

예제

public class Program
{
    public static void Main()
    {
        BigStruct s = new BigStruct(1);
        long result = Sum(s);

        Console.WriteLine("Result : " + result);
    }

    static long Sum(in BigStruct s)
    {
        // s = new BigStruct(2); // 에러: 여기서 in 파라미터에 재할당 불가
        // s.A = 100; // 에러: in 파라미터의 필드에 재할당 불가

        return s.A + s.B + s.C + s.D + s.E + s.F + s.G + s.H;
    }
}

public readonly struct BigStruct
{
    public readonly long A, B, C, D, E, F, G, H;
    public BigStruct(long v)
    {
        (A, B, C, D, E, F, G, H) = (v, v, v, v, v, v, v, v);
    }
}



© csharpstudy.com