首页 > 解决方案 > 我没有使用闭包,但它没有编译为静态方法

问题描述

为什么某些 C# lambda 表达式编译为静态方法?

即使我没有使用闭包,它也不会像上面那样编译。

我目前正在使用 .NET 5.0,并尝试更改目标框架。但它没有用。

为什么目标不引用空值?

我目前正在编写与 linq 表达式相关的代码,我需要一个使用静态方法编译的匿名方法。

帮我。

Action action = () => { };
action.Method.IsStatic.PrintLine(); // False
action.Target.ToString().PrintLine(); // TestConsole.Prgoram+<>c
action.Target.GetHashCode().PrintLine(); // 58225482
action.Method.ToString().PrintLine(); // Void <Main>b__1_0()

Func<int, int, int> addFunc = (int a, int b) => a + b;
addFunc.Method.IsStatic.PrintLine(); // False
addFunc.Target.ToString().PrintLine(); // TestConsole.Prgoram+<>c
addFunc.Target.GetHashCode().PrintLine(); // 58225482
addFunc.Method.ToString().PrintLine(); // Int32 <Main>b__1_1(Int32, Int32)

标签: c#.netdelegatesclosures

解决方案


推荐阅读