有没有办法知道函数是否是MethodInfo中的Expression-bodied成员

时间:2015-10-29 15:03:04

标签: c# c#-6.0

有没有办法知道函数是否是MethodInfo中的Expression?

2 个答案:

答案 0 :(得分:5)

扩展我的评论并进一步@SLAks回答......

表达身体的成员只是语法糖,他们编译成相同的代码。例如,考虑这个类:

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   

答案 1 :(得分:4)

表达身体的成员纯粹是语法糖 无论如何编译的程序集完全相同。