Lire en anglais

Partager via


Avertissement du compilateur (niveau 1) CS0197

Le passage de 'argument' comme ref ou out ou la prise de son adresse peut provoquer une exception runtime, car il s’agit d’un champ d’une classe marshalée par référence

Toute classe qui dérive directement ou indirectement de MarshalByRefObject est une classe marshalée par référence. Une telle classe peut être marshalée par référence au-delà des limites du processus et de l’ordinateur. Par conséquent, les instances de cette classe peut être des proxys vers des objets distants. Vous ne pouvez pas transmettre un champ d’un objet proxy en tant que référence ou sortie. Par conséquent, vous ne pouvez pas transmettre de champs d’une telle classe en tant que ref ou out, sauf si l’instance est celle-ci, qui ne peut pas être un objet proxy.

Exemple

L’exemple suivant génère l’avertissement 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);  
   }  
}