- 封装 就是将对象用户不必了解的实现细节隐藏起来的一种语言能力。封装的核心就是对象内部数据不应该从公共接口直接访问。如果想改变对象的状态就要使用访问方法和修改方法。在C#中封装是通过访问修饰符在语法级别上实现的。
- 继承 是指基于已有类定义来创建新类定义的语言能力。
- 多态 是语言以同一种方式处理相关对象的能力
- 虚拟成员 是定义默认实现基类中的成员,它可能被派生类改写(override)。
- 抽象方法 是基类中不能提供默认实现的成员,它提供签名。抽象方法必须被派生类重写。
- 嵌套类型 是直接声明在类或者结构作用域中的类型。嵌套类型 可以使用private 修饰符,而非嵌套类型只能用public 或者internal 修饰符定义。
- Protected 设置的逻辑 只能被当前类调用或者派生类调用,因此不能从对象实例调用。
- 类(class)或结构(struct)如果不是在其它类或结构中的话,它的访问类型要不就是internal, 要不就是public;
换句话说,如果它在其它类或结构中的话,则可以为private 或protected等。下面我说的类和结构,如无特殊说明,均指非"类中类"
类或结构的默认访问类型是internal.
类中所有的成员,默认均为private。 - Const 关键字定义常量,定义时必须为常量值指定初始值。有这种限制是因为编译时必须知道常量的值。常量字段是隐式静态的,所以使用类名前缀引用在类中定义常量。
- 只读字段 的值可以在运行时决定 因此在构造函数作用域中进行赋值时合法的,只读字段不是隐式静态的。
- 类和结构可以使用名为partial 的类型修饰符定义,它允许跨多个*.cs 文件定义C#类型。定义分部类型唯一的要求:类型名必须一致的并且定义在相同的.NET 命名空间中。
- 通过XML 生成C# 源代码的文档:第一步是使用新的代码注释符号:3条正斜线(///)。第二步 根据XML 数据生成对应的*.XML 文件。VVS 2008 允许使用属性窗口(生成XML文档)复选框选项来指定XML文档文件的名字。第三步:使用NDoc 应用程序 可把XML文件生成各种不同形式的文档。[微软在社区技术预览(CTP)发布了一个叫Sandcastle的工具和NDoc功能相似]
- 基类的作用是为扩展它的类定义所有公共数据以及成员。.NET 平台要求一个类只能有一个直接基类。
- C# 结构总是隐式密封(Sealed)的,因此 不能从结构继承结构,从类继承结构或从结构继承类。(简单说它只能继承接口,不能继承别的,也不能别别的继承。)
- 在C#下,一般基类的默认构造函数会在派生类构造之前被自动调用。
- 使用base 关键字控制基类的创建
public Class1(string str1,string str2,string str3,string str4):base(str1,str2,str3)
{
_str4 = str4;
}
这样就可以显式调用合适的自定义构造函数,以减少对继承的初始化成员的调用次数。
- 抽象(abstract)基类的多态接口只是一组虚的或者抽象的方法。抽象方法只可以定义在抽象类中,如果不是这样的话,就会收到编译错误。
- 子类重写虚方法(virtual)不是必须的。
- 投影(shadowing)正式的说:如果派生类定义的成员和定义在基类中的成员一致,派生类就投影了父类的版本。我们可以在派生类的成员上添加new关键字。这样显式声明的派生类型就故意设计为隐藏符类中的版本。
- 在基类引用中保存派生类型总是安全的。正式的说这叫隐式转换。我们必须使用C#强制转换运算符进行显式的向下转换(父类向子类),强制转换在运行时而不是在编译时进行运算。
- as 关键字在运行时快速检测某个类型是否和另外一个兼容。如果返回null 则表示不兼容。
- is 也是用来检测两个项是否兼容,和as不同的是:如果不兼容is 关键字返回的是false而不是null 引用。
- System.Object.GetHashCode() 使用对象在内存中的当前位置来产生散列码。
- System.Exception.TargetSite 属性帮助我们了解引发某个异常的方法的各种信息。System,Exception.StackTrace 属性帮助我们标识引发异常的一系列调用。需要注意的是它是异常自动产生的,无法为其赋值。HelpLink 帮助用户找到具体的URL或包含更多信息的标准Windows帮助文档。System,Exception.Data 属性允许我们使用用户提供的信息(键/值 格式)来填充异常对象。
- .NET 平台引发的异常应被称为 系统异常。系统异常直接派生自System.SystemException。自定义异常应当派生自System.ApplicationException类型。System.ApplicationException唯一的目的就是标识出错误的来源。
- 自定义异常。