您的位置:首页 > 编程语言 > C#

C#学习笔记(二)

2005-01-23 01:15 225 查看
1) static constructors适合用来做那些不能初始化,且只需做一次的设置工作。

2) private constructors可以保证该类不被实例化。

3) property的set和get函数使数据封装更好,且比C++中手工编写set/get函数省力。

(The client can interact with the properties directly, without sacrificing the data hiding and encapsulation sacrosanct in good object-oriented design)

4) readonly保证了public数据的只读性。

5) 类及其成员有不同的可见性的时候,以较严格的为准。

6) C#用base来表示基类,而不是具体的类名。

7) 如果基类有默认的构造函数,派生类的构造函数会自动调用基类的默认构造函数。如果派生类没有构造函数,系统会为它创建一个什么都不做的构造函数,并自动调用基类的默认构造函数。

8) 派生类用new来重载基类的函数。

9) virtual和override用来实现多态性(runtime type),不使用virtual和override的时候,无法动态联编,使用的是基类的方法,且这个方法的多态性得以继承,即派生类的派生类仍能动态实现这一方法。

10) new和override: new类似于覆盖,即派生类的这个方法不会动态联编。override则可以成为重载,因为它是动态联编的。

11) virtual在C#里,总是一个虚拟派遣的根;找到一个virtual函数后,不会再往上追溯。

12) 如果有一个或多个方法是抽象的,那么这个类的定义也需要用abstract来标记。抽象方法无法被实现。

13) abstract无法保证子类的子类也自行实现这个抽象方法。

14) sealed使类无法被继承。

15) object的ToString实现的是返回类的名字。

16) 嵌套类能访问外层类的所有成员,并能对外不可见。

17) C#不能创建非静态操作符(C++中可以?)

18) is操作符用于判别动态运行类型是否是某个类。

19) 关系操作符成对重载。在重载转换操作符时,implict被用于不会丢失信息的场合,explicit用于其它场合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: