Share via


컴파일러 오류 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);
   }
}