Freigeben über


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.

Siehe auch

Referenz

unsafe (C#-Referenz)