更新:2007 年 11 月

错误消息

表达式目录树不能包含不安全的指针操作

表达式目录树不支持指针类型,因为 Expression<(Of <(TDelegate>)>)..::.Compile 方法只能生成可验证代码。请参见注释。

更正此错误

  • 请不要在尝试创建表达式目录树时使用指针类型。

示例

下面的示例生成 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# 参考)