有没有办法知道函数是否是来自 MethodInfo 的 Expression-bodied Member
Is there a way to know if function is Expression-bodied Member from MethodInfo
有没有办法知道函数是否是来自 MethodInfo 的 Expression bodied?
表达式体成员是纯粹的语法糖。
无论如何,编译后的程序集完全相同。
扩展我的评论并进一步@SLAks 回答...
表达式体成员只是语法糖,它们编译成相同的代码。例如,考虑这个 class:
public class Blah
{
public void Foo() { Console.WriteLine("Hello"); }
public void Bar() => Console.WriteLine("Hello");
}
生成的 IL 看起来像这样,除了 nop
(在调试模式下编译的副作用),它们是相同的:
Blah.Foo:
IL_0000: nop
IL_0001: ldstr "Hello"
IL_0006: call System.Console.WriteLine
IL_000B: nop
IL_000C: ret
Blah.Bar:
IL_0000: ldstr "Hello"
IL_0005: call System.Console.WriteLine
IL_000A: nop
IL_000B: ret
有没有办法知道函数是否是来自 MethodInfo 的 Expression bodied?
表达式体成员是纯粹的语法糖。
无论如何,编译后的程序集完全相同。
扩展我的评论并进一步@SLAks 回答...
表达式体成员只是语法糖,它们编译成相同的代码。例如,考虑这个 class:
public class Blah
{
public void Foo() { Console.WriteLine("Hello"); }
public void Bar() => Console.WriteLine("Hello");
}
生成的 IL 看起来像这样,除了 nop
(在调试模式下编译的副作用),它们是相同的:
Blah.Foo:
IL_0000: nop
IL_0001: ldstr "Hello"
IL_0006: call System.Console.WriteLine
IL_000B: nop
IL_000C: ret
Blah.Bar:
IL_0000: ldstr "Hello"
IL_0005: call System.Console.WriteLine
IL_000A: nop
IL_000B: ret