分享

[CLR via C#]6. 类型和成员基础

 昵称10504424 2014-01-26
[CLR via C#]6. 类型和成员基础

6.1 类型的各种成员

  在一个类型中,可以定义0个或多个以下种类的成员:

  6.2 类型的可见性

  在文件范围中定义类型时,可以将类型的可见性指定为public或internal。

  定义类型的成员(包括嵌套类型)时,可指定成员的可访问性(accessibility)。

  6.4 静态类

  在C#中,要用static关键字定义不可实例化的类。这个关键字只能应用于类,不能引用于结构 (值类型)。这是因为CLR总是允许值类型实例化。

  6.5 分部类、结构和接口

  partial这个关键字告诉C#编译器,一个类、结构或者接口的定义源代码可能分散到一个或者多个源代码文件中。

  组件软件编程(Component Software programming,CSP)正是OOP发展到极致的一个成功。下面列举了组件的一些特点。
  2)callvirt 这个调用指令可调用实例方法和虚方法,但不能调用静态方法。用callvirt指令调用实例方法或虚方法时,必须指定引用了一个对象的变量。用callvirt指定调用非虚实例方法时,变量的类型指明了最终由CLR调用的方法是在哪个类型中定义的。用callvirt指令调用虚实例方法时,CLR会调查发出调用的哪个对象的实际类型,然后以多态方式调用。为了确定类型,用来发出调用的变量决不能为null。换言之,编译这个调用时,JIT编译器会生成代码来验证变量的值是不是为null。正是由于要进行这种额外的检查,所有callvirt指令执行速度比call稍慢。注意,即使callvirt指令调用的是一个非虚的实例方法,也会执行这种null检查。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多