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
Impossibile passare 'parametro' come argomento ref o out a causa di 'motivo'
Cannot pass 'parameter' as a ref or out argument because 'reason''
Questo errore si verifica quando si passa una variabile come argomento ref o out in un contesto in cui la variabile è di sola lettura. I contesti di sola lettura includono le variabili di iterazione foreach, nonché le variabili using e fixed. Per correggere l'errore, non eseguire la chiamata di funzioni che accettano la variabile foreach, using o fixed come parametro ref o out nei blocchi using e nelle istruzioni foreach e fixed.
Esempio
Il seguente codice di esempio genera l'errore CS1657:
// CS1657.cs
using System;
class C : IDisposable
{
public int i;
public void Dispose() {}
}
class CMain
{
static void f(ref C c)
{
}
static void Main()
{
using (C c = new C())
{
f(ref c); // CS1657
}
}
}
Il seguente codice di esempio genera lo stesso errore in un'istruzione fixed:
// CS1657b.cs
// compile with: /unsafe
unsafe class C
{
static void F(ref int* p)
{
}
static void Main()
{
int[] a = new int[5];
fixed(int* p = a) F(ref p); // CS1657
}
}