共用方式為


編譯器錯誤 CS1944

更新:2007 年 11 月

錯誤訊息

運算式樹狀架構可能不含 unsafe 指標作業

因為 Expression<TDelegate>.Compile 方法只允許產生可驗證的程式碼,所以運算式樹狀架構不支援指標型別 (Pointer Type)。請參閱註解。

若要更正這個錯誤

  • 嘗試建立運算式樹狀架構時,請不要使用指標型別。

範例

下列範例會產生 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
    }
}

在某些情況下,運算式樹狀架構中可以有指標。例如,請參考下列程式碼:

Expression<Func<int*[], int*[]>) e = (int*[] i)=>i;

因為沒有型別引數是指標型別,所以這個程式碼是有效的運算式樹狀架構。它們是指標的陣列,而陣列不是指標型別。而且,運算式樹狀架構的主體並不會危害任何指標。

請參閱

參考

unsafe (C# 參考)