編譯器錯誤 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;
因為沒有型別引數是指標型別,所以這個程式碼是有效的運算式樹狀架構。它們是指標的陣列,而陣列不是指標型別。而且,運算式樹狀架構的主體並不會危害任何指標。