一 函数

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 = 是一个道理。

posted on 2009-08-26 22:23  Robert.Hu  阅读(160)  评论(0)    收藏  举报

导航