Avviso del compilatore (livello 1) CS0197
Passare 'argument' come parametro ref o out oppure accettarne l'indirizzo potrebbe provocare un'eccezione in fase di esecuzione perché è un campo di una classe con marshalling per riferimento
Tutte le classi che derivano direttamente o indirettamente da MarshalByRefObject sono classi con marshalling per riferimento. Tali classi possono essere sottoposte a marshalling per riferimento oltre i limiti del processo e del computer. Le istanze di queste classi possono quindi essere proxy per gli oggetti remoti. Non è possibile passare un campo di un oggetto proxy come ref o out. I campi di tali classi non possono dunque essere passati come argomenti ref
o out
, a meno che l'istanza non sia this, ovvero un'istanza che non può essere un oggetto proxy.
L'esempio seguente genera l'errore 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);
}
}
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: