没有非本地依赖项的 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 是否捕获了它的封闭变量/使用闭包。
还是 C# 不保证没有非本地依赖项的 lambda 是静态的?
它不作这样的保证。 这是某些版本的编译器的实现细节;它没有义务继续前进。 如您所见,他们已经更改了实现细节。