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
Una struttura ad albero dell'espressione non può contenere un'operazione di puntatore unsafe
An expression tree may not contain an unsafe pointer operation
Le strutture ad albero dell'espressione non supportano tipi di puntatore perché il metodo Expression<TDelegate>.Compile può produrre solo codice verificabile. Vedere commenti.
Per correggere l'errore
- Non utilizzare tipi di puntatore quando si tenta di creare una struttura ad albero dell'espressione.
Esempio
Nell'esempio seguente viene generato l'errore CS1944:
// cs1944.cs
// Compile with: /unsafe
using System.Linq.Expressions;
unsafe class Test
{
public delegate int* D(int i);
static void Main()
{
Expression<D> tree = x => &x; // CS1944
}
}
using System.Linq.Expressions;
unsafe class Test
{
public delegate int* D(int i);
static void Main()
{
Expression<D> tree = x => &x; // CS1944
}
}
In alcune situazioni la presenza di puntatori nelle strutture ad albero dell'espressione è corretta. Si consideri ad esempio il seguente codice:
Expression<Func<int*[], int*[]>) e = (int*[] i)=>i;
Questo codice è una struttura ad albero dell'espressione valida perché nessun tipo di argomento è un tipo di puntatore. Si tratta di matrici di puntatori e le matrici non sono tipi di puntatore. Inoltre, il corpo della struttura ad albero dell'espressione non può danneggiare alcun puntatore.