영어로 읽기

다음을 통해 공유


컴파일러 경고(수준 1) CS0197

'argument'는 참조로 마샬링하는 클래스의 필드이므로 ref 또는 out으로 전달하거나 해당 주소를 가져오면 런타임 예외가 발생할 수 있습니다.

MarshalByRefObject 에서 직접 또는 간접적으로 파생되는 클래스는 참조로 마샬링하는 클래스입니다. 이러한 클래스는 프로세스 및 컴퓨터 경계에서 참조로 마샬링할 수 있습니다. 따라서 이 클래스의 인스턴스는 원격 개체에 대한 프록시일 수 있습니다. 프록시 개체의 필드를 ref 또는 out으로 전달할 수 없습니다. 따라서 인스턴스가 프록시 개체가 될 수 없는 ref this out가 아닌 경우 이러한 클래스의 필드를 또는으로 전달할 수 없습니다.

예시

다음 샘플에서는 CS0197을 생성합니다.

C#
// CS0197.cs  
// compile with: /W:1  
class X : System.MarshalByRefObject  
{  
   public int i;  
}  
  
class M  
{  
   public int i;  
   static void AddSeventeen(ref int i)  
   {  
      i += 17;  
   }  
  
   static void Main()  
   {  
      X x = new X();  
      x.i = 12;  
      AddSeventeen(ref x.i);   // CS0197  
  
      // OK  
      M m = new M();  
      m.i = 12;  
      AddSeventeen(ref m.i);  
   }  
}