C# 与 .Net 3.5 高级程序设计(第四版) 读书笔记(三)

时间:2022-07-13 09:05:07
  1. 封装 就是将对象用户不必了解的实现细节隐藏起来的一种语言能力。封装的核心就是对象内部数据不应该从公共接口直接访问。如果想改变对象的状态就要使用访问方法和修改方法。在C#中封装是通过访问修饰符在语法级别上实现的。
  2. 继承 是指基于已有类定义来创建新类定义的语言能力。
  3. 多态 是语言以同一种方式处理相关对象的能力
  4. 虚拟成员 是定义默认实现基类中的成员,它可能被派生类改写(override)。
  5. 抽象方法 是基类中不能提供默认实现的成员,它提供签名。抽象方法必须被派生类重写。
  6. 嵌套类型 是直接声明在类或者结构作用域中的类型。嵌套类型 可以使用private 修饰符,而非嵌套类型只能用public 或者internal 修饰符定义。
  7. Protected 设置的逻辑 只能被当前类调用或者派生类调用,因此不能从对象实例调用。
  8. 类(class)或结构(struct)如果不是在其它类或结构中的话,它的访问类型要不就是internal, 要不就是public;
    换句话说,如果它在其它类或结构中的话,则可以为private 或protected等。下面我说的类和结构,如无特殊说明,均指非"类中类"
    类或结构的默认访问类型是internal.
    类中所有的成员,默认均为private。
  9. Const 关键字定义常量,定义时必须为常量值指定初始值。有这种限制是因为编译时必须知道常量的值。常量字段是隐式静态的,所以使用类名前缀引用在类中定义常量。
  10. 只读字段 的值可以在运行时决定 因此在构造函数作用域中进行赋值时合法的,只读字段不是隐式静态的。
  11. 类和结构可以使用名为partial 的类型修饰符定义,它允许跨多个*.cs 文件定义C#类型。定义分部类型唯一的要求:类型名必须一致的并且定义在相同的.NET 命名空间中。
  12. 通过XML 生成C# 源代码的文档:第一步是使用新的代码注释符号:3条正斜线(///)。第二步 根据XML 数据生成对应的*.XML 文件。VVS 2008 允许使用属性窗口(生成XML文档)复选框选项来指定XML文档文件的名字。第三步:使用NDoc 应用程序 可把XML文件生成各种不同形式的文档。[微软在社区技术预览(CTP)发布了一个叫Sandcastle的工具和NDoc功能相似]
  13. 基类的作用是为扩展它的类定义所有公共数据以及成员。.NET 平台要求一个类只能有一个直接基类。
  14. C# 结构总是隐式密封(Sealed)的,因此 不能从结构继承结构,从类继承结构或从结构继承类。(简单说它只能继承接口,不能继承别的,也不能别别的继承。)
  15. 在C#下,一般基类的默认构造函数会在派生类构造之前被自动调用。
  16. 使用base 关键字控制基类的创建

public Class1(string str1,string str2,string str3,string str4):base(str1,str2,str3)

    {

        _str4 = str4;

}

       这样就可以显式调用合适的自定义构造函数,以减少对继承的初始化成员的调用次数。

  1. 抽象(abstract)基类的多态接口只是一组虚的或者抽象的方法。抽象方法只可以定义在抽象类中,如果不是这样的话,就会收到编译错误。
  2. 子类重写虚方法(virtual)不是必须的。
  3. 投影(shadowing)正式的说:如果派生类定义的成员和定义在基类中的成员一致,派生类就投影了父类的版本。我们可以在派生类的成员上添加new关键字。这样显式声明的派生类型就故意设计为隐藏符类中的版本。
  4. 在基类引用中保存派生类型总是安全的。正式的说这叫隐式转换。我们必须使用C#强制转换运算符进行显式的向下转换(父类向子类),强制转换在运行时而不是在编译时进行运算。
  5. as 关键字在运行时快速检测某个类型是否和另外一个兼容。如果返回null 则表示不兼容。
  6. is 也是用来检测两个项是否兼容,和as不同的是:如果不兼容is 关键字返回的是false而不是null 引用。
  7. System.Object.GetHashCode() 使用对象在内存中的当前位置来产生散列码。
  8. System.Exception.TargetSite  属性帮助我们了解引发某个异常的方法的各种信息。System,Exception.StackTrace 属性帮助我们标识引发异常的一系列调用。需要注意的是它是异常自动产生的,无法为其赋值。HelpLink 帮助用户找到具体的URL或包含更多信息的标准Windows帮助文档。System,Exception.Data 属性允许我们使用用户提供的信息(键/值 格式)来填充异常对象。
  9. .NET 平台引发的异常应被称为 系统异常。系统异常直接派生自System.SystemException。自定义异常应当派生自System.ApplicationException类型。System.ApplicationException唯一的目的就是标识出错误的来源。
  10.  自定义异常。