Compartilhar via


CS1651 de erro do compilador

Mensagem de erro

Campos do campo static readonly 'identificador' não podem ser passados como ref ou out (exceto em um construtor estático)

Este erro ocorre se você passar uma variável para uma função que é um membro do campo estático readonly sistema autônomo um argumento ref.Como parâmetros ref podem ser modificados pela função, isso não é permitido.Para resolver esse erro, remova o somente leitura palavra-chave no campo ou não passar os membros de somente leitura e o campo para a função.Por exemplo, você pode tentar a criação de um temporário variável que pode ser modificado e passando o temporário sistema autônomo um argumento ref, conforme mostrado no exemplo a seguir.

O exemplo a seguir gera CS1651:

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