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

时间:2016-01-26 16:46:55

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

我正在运行Visual Studio 2015 Enterprise,.NET 4.6,并且我编写了一些依赖于Delegates静态的代码。我从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是否捕获了它的封闭变量/使用闭包。

1 个答案:

答案 0 :(得分:2)

  

或者C#不能保证没有非本地依赖关系的lambda会变成静态吗?

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