Kompilatorvarning (nivå 1) CS0197

Att skicka "argument" som referens eller ut eller ta dess adress kan orsaka ett körningsund undantag eftersom det är ett fält i en marshal-by-reference-klass

Alla klasser som härleds, direkt eller indirekt, från MarshalByRefObject är en marshal-by-reference-klass. En sådan klass kan ordnas med referens över process- och datorgränser. Instanser av den här klassen kan därför vara proxyservrar för fjärrobjekt. Du kan inte skicka ett fält i ett proxyobjekt som referens eller ut. Därför kan du inte skicka fält i en sådan klass som ref eller out, såvida inte instansen är detta, vilket inte kan vara ett proxyobjekt.

Exempel

Följande exempel genererar CS0197.

// 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);  
   }  
}