WEB开发网
开发学院软件开发C语言 C#里,派生类的方法里的匿名delegate调用基类的方... 阅读

C#里,派生类的方法里的匿名delegate调用基类的方法会产生无法验证的代码

 2009-06-04 08:30:17 来源:WEB开发网   
核心提示: 在Unified C# 3.0 Specification的1.10 Enum中,规定了 引用In order for the default value of an enum type to be easily available, the literal 0 implicitly co

在Unified C# 3.0 Specification的1.10 Enum中,规定了

引用

In order for the default value of an enum type to be easily available, the literal 0 implicitly converts to any enum type.

与前几个版本的规定没怎么改变,仍然是说“字面量0”而不是“编译时常量0”可以被转换为任意枚举类型。

于是.NET Framework与Mono都“很无奈”的在这点上无法与规范保持一致了。=_=||

C#里派生类的方法里的匿名delegate调用基类的方法会产生无法验证的代码

原文:Why are base class calls from anonymous delegates nonverifiable?

前面开篇花絮里提到的是没有熟思而做的优化带来的后果,而下面要关注的问题就稍微复杂一些了。

考虑这段代码片段:

引用

C#代码   

using System;

public delegate void D( );

public class Alpha {

    public virtual void Blah( ) {
        Console.WriteLine( "Alpha.Blah" );
    }
}

public class Bravo : Alpha {

    public override void Blah( ) {
        Console.WriteLine( "Bravo.Blah" );
        base.Blah( );
    }

    public void Charlie( ) {
        int x = 123;
        D d = delegate {
            this.Blah( );
            base.Blah( );
            Console.WriteLine( x );
        };
        d( );
    }
}

class Program {
    // do nothing, just to make the compiler happy
    // else we'd compiler with /target:library
    public static void Main(string[] args) { }
}

上一页  1 2 3 4 5 6  下一页

Tags:派生 方法 匿名

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接