Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Att skicka "argument" som referens eller ut eller ta dess adress kan orsaka ett körningsund undantag eftersom det är ett fält i en marshal-by-reference-klass
Alla klasser som härleds, direkt eller indirekt, från MarshalByRefObject är en marshal-by-reference-klass. En sådan klass kan ordnas med referens över process- och datorgränser. Instanser av den här klassen kan därför vara proxyservrar för fjärrobjekt. Du kan inte skicka ett fält i ett proxyobjekt som referens eller ut. Därför kan du inte skicka fält i en sådan klass som ref eller out, såvida inte instansen är detta, vilket inte kan vara ett proxyobjekt.
Exempel
Följande exempel genererar 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);
}
}