Upozornění kompilátoru (úroveň 1) CS0197
Předání argumentu jako odkaz nebo odebrání adresy může způsobit výjimku za běhu, protože se jedná o pole třídy marshal-by-reference.
Každá třída, která je odvozena přímo nebo nepřímo, MarshalByRefObject je zařazování podle referenční třídy. Takovou třídu lze zařaďovat pomocí odkazu přes hranice procesu a stroje. Instance této třídy by tedy mohly být proxy pro vzdálené objekty. Pole objektu proxy nelze předat jako odkaz nebo ven. Nelze tedy předat pole takové třídy jako ref
nebo out
, pokud je to instance, což nemůže být objekt proxy.
Následující ukázka vygeneruje 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);
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: