컴파일러 오류 CS1651
업데이트: 2007년 11월
오류 메시지
정적 읽기 전용 필드 'identifier'의 필드는 ref 또는 out으로 전달할 수 없습니다. 단 정적 생성자에서는 예외입니다.
Fields of static readonly field 'identifier' cannot be passed ref or out (except in a static constructor)
이 오류는 변수를 정적 읽기 전용 필드의 멤버인 함수에 ref 인수로 전달하면 발생합니다. 함수가 ref 매개 변수를 수정할 수도 있기 때문에 이러한 전달은 허용되지 않습니다. 이 오류를 해결하려면 필드에서 readonly 키워드를 제거하거나, 읽기 전용 필드의 멤버를 함수에 전달하지 마십시오. 예를 들어, 다음 예제와 같이 수정될 수 있는 임시 변수를 만들어 ref 인수로 전달할 수도 있습니다.
다음 샘플에서는 CS1651 오류가 발생하는 경우를 보여 줍니다.
// CS1651.cs
public struct Inner
{
public int i;
}
class Outer
{
public static readonly Inner inner = new Inner();
}
class D
{
static void f(ref int iref)
{
}
static void Main()
{
f(ref Outer.inner.i); // CS1651
// Try this instead:
// int tmp = Outer.inner.i;
// f(ref tmp);
}
}