zoukankan      html  css  js  c++  java
  • 《CLR.via.C#第三版》第二部分第6,7章节读书笔记(三)

    第6章讲的是类型和成员基础

    重要认知:虚方法

    虚方法的设计原则:设计一个类型时,应尽量减少所定义的虚方法的数量。

          首先,调用虚方法的速度比调用非虚方法慢。

          其次,JIT编译器不能内嵌虚方法,这进一步影响了性能。

          第三,虚方法使组件的版本控制变得更脆弱。

          第四,定义一个基类时,如果希望一些方法是多态的,最好的办法是使复杂的办法成为虚方法,简便的成为非虚方法。

    引申到定义类时应遵循的原则:

          1. 定义类时,除非确定要将此类作为基类使用,否则总是显示指定为sealed类;
          2. virtual永远最后才考虑,因为virtual成员会放弃许多控制,丧失独立性,过于依赖派生类的正确行为;

    关于虚方法的代码示例:(如果没有注释,你"猜对"了吗?)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace CATest101
    {
        public class A
        {
            public void MethodF()
            {
                Console.WriteLine("A.F");
            }
            public virtual void MethodG()
            {
                Console.WriteLine("A.G");
            }
        }
    
        public class B : A
        {
            new public void MethodF()
            {
                Console.WriteLine("B.F");
            }
            public override void MethodG()
            {
                Console.WriteLine("B.G");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                B b;
                b = new B();
                A a = b;//定义A类型的变量a,并指向b对象的实例
                a.MethodF(); //输出A.F
                b.MethodF(); //输出B.F
                a.MethodG(); //输出B.G
                b.MethodG(); //输出B.G
            }
        }
    }
    View Code

    知识点:const静态常量和readonly动态常量
    1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
    2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
    此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。
    更对关于const和readonly请看这个链接,我觉得作者讲的不错。

  • 相关阅读:
    oculus按键大全
    10 soundJs 初体验
    09 获取服务器时间
    08 基本数据类型转换
    07 如果再使用animateCC2018或者苹果系统使用animate时出现Uncaught ReferenceError: lib is not defined的错误
    AS3.0和php数据交互POST方式
    06 显示fps帧频
    05 js利用ajax向服务器发送请求并返回json值
    04 ajax执行php并传递参数
    03php拉取服务器信息并生成json
  • 原文地址:https://www.cnblogs.com/hangwei/p/4087056.html
Copyright © 2011-2022 走看看