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);
}
}
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.