CS1649 de erro do compilador

Mensagem de erro

Os membros do campo readonly 'identificador' não podem ser passados como ref ou out (exceto em um construtor)

Este erro ocorre se você passar uma variável para uma função que é um membro de um readonly campo sistema autônomo um ref ou out argumento. Desde ref e out parâmetros podem ser modificados pela função, isso não é permitido. Para resolver esse erro, remova o readonly palavra-chave no campo, ou não passar os membros das readonly 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 ref argumento, sistema autônomo mostrado no exemplo a seguir.

Exemplo

O exemplo a seguir gera CS1649:

// CS1649.cs
public struct Inner
    {
        public int i;
    }

class Outer
{
    public readonly Inner inner = new Inner();
}

class D
{
    static void f(ref int iref)
    {
    }

    static void Main()
    {
        Outer outer = new Outer(); 
        f(ref outer.inner.i);  // CS1649
        // Try this code instead:
        // int tmp = outer.inner.i;
        // f(ref tmp);
    }
}