c#高级编程第六版读书笔记

1.对象方法参数传递

  参数可以通过引用或值传递给方法,在变量通过引用传递给方法时,被调用的方法将得的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧发挥作用.而如果变量是通过值传递给方法的,被调用的方法得到的是变量的一个副 本,也就是说大方法退出后,.对一次量进行的修改会丢失.注意字符串是不同的.因为字符串是值不能改变的.在方法调用中,对字符串所做的任何改变都不会影响原来的字符串.

  public void action(int i,intp[] list)

  {...}

  在方法内部对i进行的修改不会影响到外部变量,对list所做的更改会影响到外部变量

  通过值传送变量是默认的.也可以迫使参数通过引用传递给该方法,为此.要使用ref关键词

2.构造函数

   系统默认的构造函数只能把成员字段初始化为标准的默认值(如果字段在类内部已初始化,则不重新初始化),如:引用类型为空引用(=null),数值类型为0,bool型为false.

3.只读字段

  常量的概念就是包含一个不能修改的值的变量,但是,常量不必满足所有的要求,有时可能需要一些变量,其值不能改变,但在运行之前其值是未知的.c#可用只读字段(readonly)解决.

4.继承与重写

  把一个基类函数声明为virtual,同样适用于属性,该函数就可以在派生类中重写了.

  class MybaseClass

  {

       public virtual string VirtualMethod()

       {

                 return "this method is virtual and defined in mybaseclass"

        }

  }

继承

   class myDrivedClass:MybaseClass

   {

     public override string VirtualMethod()

     {

         return "..."

     }

   }

   如果签名方法在基类或派生类中都进行了声明.但该方法没有声明virtual和override,派生类就会隐藏基类方法(书96页),可用new关键词隐藏基类方法.如:

class MybaseClass

  {

       public  string VirtualMethod()

       {

                 return "this method is virtual and defined in mybaseclass"

        }

  }

  继承

class myDrivedClass:MybaseClass

   {

     public new string VirtualMethod()

     {

         //在继承方法中可用base关键字调用基类方法.如:

         // return base.virtualmethod()+"ok";

         return "..."

     }

   }

5.派生类构造函数(第100页)

  不论类继承多少次,构造函数的调用顺序是先调用system.obejct.再按照层次结构自上向下进行.直到到达编译器要实例化的类为止,还要注意在这个过程中,每个构造函数都初化始它自己类中的字段,这是它的一般工作方式.也就是说基类的构造函数总是最先调用,派生类的构造函数可以在执行过程中调用它可以访问的基类方法.
   在编译器试图为派生类创建构造函数时,默认两个类的构造函数必须具有相同的签名.

如果签名不同,则需用base关键字指定执行的构造函数

6.接口

   接口不能有构造函数或字段,接口定义也不允许包含运算符重载,在接口定义中还不允许有声明成员上的修饰符,接口成员总是公共的,不能声明为虚方法或静态方法

posted @ 2010-10-25 14:36  沉默杨  阅读(444)  评论(0编辑  收藏  举报