代码之家  ›  专栏  ›  技术社区  ›  Chris Kooken

检查c action/lambda/delegate是否包含任何代码/语句

  •  4
  • Chris Kooken  · 技术社区  · 17 年前

    有人能告诉我是否有方法查看操作是否包含任何代码吗?

    Action x = new Action(()=>
                 {
    
                 });
    

    应返回false,而

    Action x = new Action(()=>
                 {
                    var x = "i am a string" 
                 });
    

    应该返回true。

    也许用反射?

    1 回复  |  直到 17 年前
        1
  •  7
  •   grega g    17 年前

    也许这会有帮助:

            Action x = new Action(() =>
            {
                var xx = "i am a string";
            });
    
    
            Action x1 = new Action(() =>
            {
    
            });
    
            MethodBody mb = x.Method.GetMethodBody();
            MethodBody mb1 = x1.Method.GetMethodBody();
    
            byte[] b = mb.GetILAsByteArray();
            byte[] b1 = mb1.GetILAsByteArray();
    

    b1(空方法体)只有2个字节,值0和42表示 NOP 和 返回 我想。