Lezen in het Engels

Delen via


Compilerwaarschuwing (niveau 1) CS0197

Het doorgeven van 'argument' als ref of out of het verwijderen van het adres kan een runtime-uitzondering veroorzaken omdat het een veld is van een marshal-by-reference-klasse

Elke klasse die direct of indirect is afgeleid van MarshalByRefObject is een marshal-by-reference-klasse. Een dergelijke klasse kan worden ge marshalld met verwijzing over proces- en machinegrenzen. Exemplaren van deze klasse kunnen dus proxy's zijn voor externe objecten. U kunt een veld van een proxyobject niet doorgeven als ref of out. U kunt dus geen velden van een dergelijke klasse doorgeven als ref ofout, tenzij het exemplaar dit is, wat geen proxyobject kan zijn.

Opmerking

In het volgende voorbeeld wordt CS0197 gegenereerd.

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