C# 没有非局部依赖关系的Lambda不是静态的

C# 没有非局部依赖关系的Lambda不是静态的,c#,.net,static,delegates,visual-studio-2015,C#,.net,Static,Delegates,Visual Studio 2015,我正在运行Visual Studio 2015 Enterprise,.NET 4.6,并且我编写了一些依赖于静态委托的代码。我运行了问题中的精确代码,但得到“false”: static void Main(字符串[]args) { Action actionMethod=s=>{Console.WriteLine(“我的名字是”+s);}; //总是假的 Console.WriteLine(actionMethod.Method.IsStatic); Console.Read(); } 这

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

static void Main(字符串[]args)
{
Action actionMethod=s=>{Console.WriteLine(“我的名字是”+s);};
//总是假的
Console.WriteLine(actionMethod.Method.IsStatic);
Console.Read();
}
这是虫子吗?或者C#不能保证没有非局部依赖的lambda是静态的吗

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

或者C#不能保证没有非局部依赖的lambda是静态的吗

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

或者C#不能保证没有非局部依赖的lambda是静态的吗

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

请参阅以获取有关为什么进行此更改的解释。请参阅以获取有关为什么进行此更改的解释。
static void Main(string[] args)
{
    Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); };

    // Always false
    Console.WriteLine(actionMethod.Method.IsStatic);

    Console.Read();
}