[ 登录注册 ]

互联网

C#学习笔记

2016-08-25 19:36:26 admin 返回上一页

1.  重点放在c#c++不同的地方,比如接口,代理,对象索引,事件,sealed

2.     事件(EVENT)是一个很好的概念。它将传统IDE里面事件驱动程序的思想加入到语言层面支持上来。结合delegate将对象相应的事件和事件处理代码绑定。

3.     c#为什么在支持interface的同时还支持abstract类声明?刚开始觉得既然abstract实际上相当于interface声明,好像两者只需要一个就行了.但是后来考虑有一定的区别,interface完全不提供实现,只是一种接口约定,继承这个接口的类一定要完全实现这些约定的接口实现,abstract类可以提供部分方法的实现,但是代表抽象概念,无法实例化.一般来说从概念上属于IS-A的类关系应该用ABSTRACT类继承。而如果是MUST-DO类型的应该从interface继承.

4.     C#中的抽象(abstract)类相当于c++中的带有纯虚函数virtual function(para1,para2)=0声明的类。而抽象方法(abstract function(para,…))相当于C++中的纯虚函数.抽象方法在继承类里面不能用base调用父类,这是很显然的,因为抽象方法只是一个声明规范,根本没有实现,所以无从调用.

5.     sealed类声明表明不允许这个类被继承。Sealed方法不允许这个方法被重载。之所以引入sealed,是为了避免类继承层次过多带来的问题或者某个类根本就没有必要被继承.很明显,在封闭类里面声明方法的时候,virtual是没有意义的,因为virtual从语义上来说是期望被继承的,而这与sealed的语义矛盾.

6.     c#类不支持多继承,但是接口允许多继承。

7.delegate实际上就是指向函数的指针,引入它的目的是为了实现事件驱动编程模式,将事件和事件处理函数连接起来.

8.以后考虑构造实验系统的时候用C#,一方面熟悉语言和IDE另外一方面C#使用起来也确实比C++方便(支持XML解析,比较强大的类库等)省下构造很多辅助类的时间集中处理当前事务.

9.abstractsealed作为类修饰符只能用其一.因为两者的目的是相反的,抽象类的目的是提供公共接口,必然要其它类继承接口并提供实现.sealed类代表不允许其它类从该类继承.

10.C#里面很好的一点是将 事件驱动-属性设置等一般只有框架或者IDE才提供的方式放到语言层面上来.

Delegate+Event:实际上是对事件驱动模型的语言层面的支持.

属性+GET/SET:实际上相当于在IDE里面通过属性设置面板来改变设置属性的功能放到语言层面上来.

11.C#中是完全面向对象的.任何数据要么属于某个类(static),要么属于某个实例(static),任何方法要么属于类(virtual)要么属于实例(virtual).c++就没有这么严格,可以定义类之外的数据或者方法.

12.对于引用来说,c++中是用&符号,而在c#中是用ref声明.C#不支持指针.

13.既然c#中允许方法有返回值类型声明,为什么还要输出参数out修饰符号呢?是因为方法返回类型只能有一个而输出参数可以有多个,这样如果返回值为多值的时候OUT是有用的.而在C++中方法的参数列表并没有区分是输入参数还是输出参数.

14.接口继承中private或者internal修饰是没有意义的.因为private代表了实现的继承而接口继承只是强调接口的继承.如果一个类从两个接口继承而来,但是两个接口中包含同名方法,那么在调用方法的时候要指明所属的接口.


文章来源:http://www.bozhiyue.com/www/2016/0825/430810.html
返回上一页    返回分类 上一篇:   下一篇:
相关