Compilerfehler CS1944
Aktualisiert: November 2007
Fehlermeldung
Eine Ausdrucksbaumstruktur darf keinen unsicheren Zeigervorgang enthalten.
An expression tree may not contain an unsafe pointer operation
Ausdrucksbaumstrukturen unterstützen keine Zeigertypen, da die Expression<TDelegate>.Compile-Methode nur überprüfbaren Code erzeugen darf. Weitere Informationen finden Sie in den Kommentaren.
So beheben Sie diesen Fehler
- Verwenden Sie keine Zeigertypen, wenn Sie eine Ausdrucksbaumstruktur erstellen möchten.
Beispiel
Durch das folgende Beispiel wird der Fehler CS1944 ausgelöst:
// 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
}
}
Gelegentlich ist es möglich, in Ausdrucksbaumstrukturen Zeiger zu verwenden. Beachten Sie z. B. folgenden Code:
Expression<Func<int*[], int*[]>) e = (int*[] i)=>i;
Dieser Code ist eine gültige Ausdrucksbaumstruktur, da keine Typargumente Zeigertypen sind. Sie sind Arrays von Zeigern, und Arrays sind keine Zeigertypen. Außerdem geschieht im Text der Ausdrucksbaumstruktur nichts Gefährliches mit den Zeigern.