zoukankan      html  css  js  c++  java
  • 第六章 类型和成员基础

    1. 类型的各种成员

    System.Runtime.CompilerServices.InternalsVisibleToAttribute(string assemblyName)指定通常仅在当前程序集中可见的类型对指定程序集可见.指定友元程序集.assemblyName包含程序集名字和公司公钥.

    接口类型必须是Public.如果没有显示声明成员的可访问性,编译器会默认为Private,限制最大的那个.

    子类重写基类的方法时,只能放宽访问限制,不能缩小.但C#要求两者必须是一样的.是因为CLr承诺派生类总是可以转型为基类,并获取基类方法的访问权,如果在派生类中进行了更严格的限制了,CLR的承诺就无法兑现了.

    2. 分部类

    C#编译器提供一个partial关键字,以允许将一个类、结构或接口定义在多个文件里。在编译时,编译器自动将类、结构或接口的各部分合并起来。这仅是C#编译器提供的一个功能,CLR对此一无所知。

    3. CLR调用虚方法虚方法

    call指令一般调用静态方法和非虚的方式调用虚方法.  (非虚的方式就是直接调用).此指令假定对象不是null.

    callvirt一般调用非虚实例方法,和虚方法.在调用前会检查对象时否为null.如果为null会抛出NullReferenceException.

    调用虚方法的速度比比调用非虚方法的速度慢.

    编译器调用由值类型定义的方法时,会倾向于使用call指令.

  • 相关阅读:
    烦人的警告 Deprecated: convertStrings was not specified when starting the JVM
    Python 推送RabbitMQ
    JavaScript-json数组排序
    CSS-返回顶部代码
    CSS-页面滑屏滚动原理
    CSS-图像映射
    CSS-下拉导航条
    CSS-background-position百分比
    CSS- 横向和纵向时间轴
    JavaScript-闭包深入浅出
  • 原文地址:https://www.cnblogs.com/zhangliming/p/3459336.html
Copyright © 2011-2022 走看看