Partager via


Erreur du compilateur CS1651

Mise à jour : novembre 2007

Message d'erreur

Les champs d'un champ readonly statique 'identificateur' ne peuvent pas être passés en ref ou out (sauf s'ils appartiennent à un constructeur statique)
Fields of static readonly field 'identifier' cannot be passed ref or out (except in a static constructor)

Cette erreur se produit si vous passez une variable en tant qu'argument ref à une fonction membre d'un champ readonly statique. Puisque les paramètres ref peuvent être modifiés par la fonction, cela n'est pas autorisé. Pour résoudre cette erreur, supprimez le mot clé readonly du champ, ou ne passez pas les membres du champ readonly à la fonction. Par exemple, vous pouvez essayer de créer une variable temporaire modifiable et de la passer en tant qu'argument ref, comme l'illustre l'exemple suivant.

L'exemple suivant génère l'erreur CS1851 :

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