Aviso do compilador (nível 1) CS0197
Passar 'argument' como ref ou out ou tomar seu endereço pode causar uma exceção de tempo de execução porque é um campo de uma classe marechal por referência
Qualquer classe que derive, direta ou indiretamente, de é uma classe marechal MarshalByRefObject por referência. Essa classe pode ser agrupada por referência através dos limites do processo e da máquina. Assim, instâncias dessa classe poderiam ser proxies para objetos remotos. Não é possível passar um campo de um objeto proxy como ref ou out. Portanto, você não pode passar campos de tal classe como ref
ou out
, a menos que a instância seja esta, que não pode ser um objeto proxy.
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);
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: