《CLR.via.C#第三版》第二部分第6,7章节读书笔记(三)
2020-12-13 16:50
标签:style blog http io color ar os 使用 sp 第6章讲的是类型和成员基础 重要认知:虚方法 虚方法的设计原则:设计一个类型时,应尽量减少所定义的虚方法的数量。 首先,调用虚方法的速度比调用非虚方法慢。 其次,JIT编译器不能内嵌虚方法,这进一步影响了性能。 第三,虚方法使组件的版本控制变得更脆弱。 第四,定义一个基类时,如果希望一些方法是多态的,最好的办法是使复杂的办法成为虚方法,简便的成为非虚方法。 引申到定义类时应遵循的原则: 1. 定义类时,除非确定要将此类作为基类使用,否则总是显示指定为sealed类; 关于虚方法的代码示例:(如果没有注释,你"猜对"了吗?) 知识点:const静态常量和readonly动态常量 《CLR.via.C#第三版》第二部分第6,7章节读书笔记(三) 标签:style blog http io color ar os 使用 sp 原文地址:http://www.cnblogs.com/hangwei/p/4087056.html
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
}
}
}
1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化
2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候
此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。
更对关于const和readonly请看这个链接,我觉得作者讲的不错。
上一篇:c++ STL map
下一篇:python 杨辉三角
文章标题:《CLR.via.C#第三版》第二部分第6,7章节读书笔记(三)
文章链接:http://soscw.com/essay/36527.html