没有非本地依赖项的 Lambda 不是静态的

本文关键字:Lambda 静态 依赖 | 更新日期: 2023-09-27 18:31:54

我正在运行Visual Studio 2015 Enterprise,.NET 4.6,我编写了一些依赖于委托是静态的代码。我从这个问题中运行了确切的代码,但我得到"假":

static void Main(string[] args)
{
    Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); };
    // Always false
    Console.WriteLine(actionMethod.Method.IsStatic);
    Console.Read();
}

这是一个错误吗?还是 C# 不保证没有非本地依赖项的 lambda 是静态的?

是否有解决方法来确定 lambda/委托是否具有非本地依赖项?我的目标是知道 lambda 是否捕获了它的封闭变量/使用闭包。

没有非本地依赖项的 Lambda 不是静态的

还是 C# 不保证没有非本地依赖项的 lambda 是静态的?

它不作这样的保证。 这是某些版本的编译器的实现细节;它没有义务继续前进。 如您所见,他们已经更改了实现细节。