Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
Passare 'argomento' come parametro ref o out oppure accettarne l'indirizzo potrebbe provocare un'eccezione in fase di esecuzione perché è un campo di una classe con marshaling per riferimento.
Passing 'argument' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class
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 pertanto 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.
Esempio
Il seguente codice di esempio 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);
}
}