zoukankan      html  css  js  c++  java
  • [Clr via C#读书笔记]Cp6类型和成员基础

    Cp6类型和成员基础

    成员

    常量;字段(静态字段和实例字段);实例构造器;类型构造器(用于静态字段的构造);方法(静态方法和实例方法);操作符重载(本质是一个方法);转换操作符;属性(本质还是方法);事件(委托);类型(嵌套类);

    类型的可见性

    public,private,protected,internal,sealed,默认的类是internal。

    友元程序集

    这部分看看就行了

    成员的可访问性

    private protected(对应clr是Family),internal(对应clr是assembly),public,protected internal;默认是private;

    静态类

    静态类一般用作工具类,组合一组相关的成员在一起。
    限制:

    • 只能派生自Object
    • 不能实现任何接口
    • 只能定义静态成员
    • 不能作为字段,方法参数或者局部变量使用

    分部类,分部结构和分部接口

    partial关键词,作用就是多个文件好管理,代码拆分。

    组件,多态和版本控制

    了解组件的含义
    主版本,次版本,内部版本,修订号;前两个代表连续,稳定的程序集,后两个代表对这个功能集的一次维护。
    CLR是连续带看版本号的,不同的版本号视为不同的程序集。
    区分abstract,virtual,override,sealed,new的含义,其实很好理解的;

    CLR如何调用虚方法,属性和事件

    这块很有意思,直接看书上,结合IL来讲解,比较清楚。call,callvirt指令。只是书上描述的不是很清楚, 暂时没看原版,不知道是不是翻译问题。 网上看了一个人的介绍,call=调用由传递的方法说明符指示的方法,callvirt=对对象调用后期的绑定方法。感觉是可以这么理解。
    设计类的时候,尽量减少虚方法的定义,因为性能原因,还有基类丧失对虚成员的控制。

    合理使用类型的可见性和成员的可访问性

    这里作者认为默认的非sealed类不好,从提高编译后代码性能,安全性和版本控制的角度来考虑的,有道理,但是实际开发中还是习惯不sealed,哈哈。
    作者不喜欢嵌套类,我也不喜欢。

    对类型进行版本控制的时候的虚方法的处理

    这里主要解释了new和override的用法,当然尽量让方法名称不一样吧。

  • 相关阅读:
    Spring中Bean及@Bean的理解
    Visual Studio(VS)秘钥集合
    PLC不能初始化问题
    【原创】C# API 未能创建 SSL/TLS 安全通道 问题解决
    【原创】XAF CriteriaOperator 使用方式汇总
    【原创】.Net WebForm Calendar 日历控件常用方法
    【原创】XAF常用属性字段设置
    【记录】Windows 操作系统常用快捷命令
    【XAF】常见错误以及对应解决方法
    【原创】XAF ITreeNode+NonPersistent 使用方式
  • 原文地址:https://www.cnblogs.com/newlifechou/p/8157783.html
Copyright © 2011-2022 走看看