Compilerwaarschuwing (niveau 1) CS0197
Het doorgeven van 'argument' als ref of out of het verwijderen van het adres kan een runtime-uitzondering veroorzaken omdat het een veld is van een marshal-by-reference-klasse
Elke klasse die direct of indirect is afgeleid van MarshalByRefObject is een marshal-by-reference-klasse. Een dergelijke klasse kan worden ge marshalld met verwijzing over proces- en machinegrenzen. Exemplaren van deze klasse kunnen dus proxy's zijn voor externe objecten. U kunt een veld van een proxyobject niet doorgeven als ref of out. U kunt dus geen velden van een dergelijke klasse doorgeven als ref
ofout
, tenzij het exemplaar dit is, wat geen proxyobject kan zijn.
In het volgende voorbeeld wordt CS0197 gegenereerd.
// 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);
}
}
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: