aviso do compilador (nível 1) CS0197

Mensagem de erro

A transmissão de 'argumento' sistema autônomo ref ou out ou a obtenção de seu endereço pode gerar uma exceção em tempo de execução porque se trata de um campo de uma classe de realizar marshaling por referência

Qualquer classe que deriva, direta ou indiretamente, de MarshalByRefObject é uma classe de realizar marshaling por referência. Essa classe pode ser empacotado por referência entre limites de processos e de computador.Assim, as instâncias dessa classe poderiam ser proxies para objetos remoto.Não é possível passar um campo de um objeto proxy sistema autônomo ref or check-out.Portanto, você não é possível passar campos de tal classe sistema autônomo ref ou out, a menos que a instância é Isso, que não pode ser um objeto proxy.

Exemplo

O exemplo a seguir gera 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);
   }
}