• 《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请看这个链接,我觉得作者讲的不错。

  • 相关阅读:
    NET VBCSCompiler.exe占用100%,造成项目卡顿的的解决方法
    C#导出word [无规则表结构+模板遇到的坑]
    mysql允许远程连接的命令
    bootstrap-table的一些基本使用及表内编辑的实现
    在 VS2015+EF6.0中使用Mysql 遇到的坑
    NET使用SuperSocket完成TCP/IP通信
    GRPC在NET上的应用
    NET SignaiR 实现消息的推送,并使用Push.js实现通知
    运维自动化之4
    运维自动化之3
  • 原文地址:https://www.cnblogs.com/hangwei/p/4087056.html
Copyright © 2020-2023  润新知