一 函数
1.引用参数和值参数
当然,C#也是会有引用传递和值传递的区别,只是调用时,它不在变量类型名后加个&而在在变量前加个ref
如
C++: void fun( int& a );
C#: void fun( ref int a );
同C++ 一样,不允许出现 ref int a;这样,不初始化ref的操作,即,ref(引用)只是个别名。
2. 输入参数 out 关键字
C#还提供这东西,如
void fun( out int a );
如果你在程序中定义了 int a = 1; 并调用 fun( a );
它会把a的内容擦掉。
3. 委托
很早就听说C#的委托了,应该相当于C++的函数指针吧!
delegate double ProcessDelegate( double p1, double p2 )
ProcessDelegate process = new processDelegate( fun );
这里的fun是和ProcessDelegate参数相同的函数
二 面向对象编程介绍
1. 析构函数
听从事C#开发的大学同学说,C++和C#的析构函数是很不一样的,具体怎么不一样,书中还没有细说,以后补上。
2. 接口
接口C++中比较少用,只有COM中比较常用到。接口照我的理解就是使实现该接口的对象拥有接口描述的能力吧。
IDisposable接口:
支持这个接口的对象须实现其Dispose()方法,当不再需要某个对象时,就调用这个方法,否则这只有等垃圾回收机制来释放它了。
3. 接口的多态性:
“尽管不能像对象一样实例化接口,但是可以建立接口类型的变量,然后就可以在支持该接口的对象上,使用这个变量访问该接口提供的方法和属性”
4. 事件:
…居然这章没怎么讲,我想,应该和MFC的事件概念有点类似吧。
5. 定义类:
关键字:
1. internal: 内部类,只有项目中的代码才能访问(…这么邪门)
2. abstract 和 sealed 这个简单。
6. System.Object
这是.Net的类的主师爷,类都会默认的继承它,所以在析构的时候,最后会调用Object的Finalize()函数释放资源
7. 接口和抽象类:
接口和抽象类都不能直接实例化,但可以声明它的变量
接口不能包含字段,构造函数,函数,静态成员和常量。
8. 浅复制和深复制
这个应该和C++中的如果有子针类型成员变量时,如果要复制对象,需手动实现copy constructor 和 operator = 是一个道理。
浙公网安备 33010602011771号