【问题标题】:Lambda without nonlocal dependencies is not static没有非本地依赖的 Lambda 不是静态的
【发布时间】:2016-01-26 16:46:55
【问题描述】:

我正在运行 Visual Studio 2015 Enterprise、.NET 4.6,并且我编写了一些依赖静态委托的代码。我从this 问题中运行了确切的代码,但我得到“错误”:

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/delegate 是否具有非本地依赖项?我的目标是知道 lambda 是否捕获了它的封闭变量/使用了闭包。

【问题讨论】:

标签: c# .net static delegates visual-studio-2015


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2019-10-02
    • 2015-02-27
    • 2017-10-12
    • 2018-02-20
    相关资源
    最近更新 更多