Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przekazywanie argumentu jako odwołania lub jego adresu może spowodować wyjątek środowiska uruchomieniowego, ponieważ jest to pole klasy marshal-by-reference
Każda klasa, która pochodzi bezpośrednio lub pośrednio, MarshalByRefObject jest klasą marshal-by-reference. Taką klasę można rozmieścić, odwołując się do granic procesów i maszyn. W związku z tym wystąpienia tej klasy mogą być serwerami proxy do obiektów zdalnych. Nie można przekazać pola obiektu proxy jako odwołania lub wyjścia. W związku z tym nie można przekazać pól takiej klasy jako ref lub out, chyba że wystąpienie jest takie, które nie może być obiektem serwera proxy.
Przykład
Poniższy przykład generuje plik 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);
}
}