值类型和引用类型

值类型:
1.布尔类型 bool
取值只能是true或者false。bool类型对于.net类库中的System.Bollean,在计算机中占4个字节。
2.结构类型 struct
把一系类的相关信息组织成为一个单一实体的过程。这就是创建一个结构的过程。
struct person
{string m_name;string m_sex;int age;}
3.枚举类型 enum
主要展示一个逻辑相关联的项目组合。

enum weekday
{Sunday,Monday,thuesday......}

引用类型:
包括 类(class),接口interface(),委托(delegate),数组(array)
1.类 是一个具有相同数据结构和相同操作的对象集合。创建类的实例必须使用关键字new来进行声明。
2.类和结构的主要区别:结构是值类型的,类是引用类型的。对于值类型,每个变量直接包括自身的所有
数据,每创建一个变量,就在内存中开辟一块区域;对于引用类型每个变量只存储对目标存储数据的引用
。每创建一个变量,就增加一个指向目标的指针。
3.接口 应用程序之间相互调用就必须先达成一个协议,被调用的一个协议中对自己所能提供的服务进行
描述。在C#中协议就是接口,那么它要实现接口所定义的服务,也就是实现接口中的方法。
4.委托 用于封装某个方法的的调用过程。
委托的使用过程
1).定义 delegate viod HelloDelegate();
2).实例化 HelloDelegate hd=new HelloDelegate(pl.say);
3).调用hd();
5.数组主要用于同一数据的数据进行批量处理。
在c#中数组需要初始化才能使用
int[]array=new int[3]{2,3,4};
int[]array={2,3,4};
*对于规则多维数组,调用length属性所得的值为整个数组的长度,而调用getlength方法,参数为0时得
到数组第一位的长度。为1时得到第二维长度。而对于规则对多维数组,调用length属性和以0的参数调用
getlength方法,得到的都是第一维的长度。

固定参数的形式为:[out/ref]<类型><参数名>
params<类型>[]<参数名>

值参数:声明不带任何修饰符的参数是是值参数。
当使用值参数时,将会分配一个新的存储位置,将是参数的拷贝传递给方法。也就是说,值参数只能将值
带进方法,而不能将值带出方法。
引用参数:用ref修饰符修饰的参数是引用参数。
与值参数不同,引用参数并不创建新的存储位置。引用参数表示的存储位置是在方法中调用的,作为实际
参数给出的那个变量所表示的存储位置。
当形参为引用参数时,方法调用中对应实参必须由关键字ref和随后的一个形参类型相同的变量组成。
变量作为引用参数传递钱,必须先明确负值,在方法内部,引用参数始终被认为是已经明确赋值的。
引用参数即能将值带进方法,又能将值带出方法。

重写override
1.父类方法用virtual关键字修饰。
2.子类方法使用override重写。(并非必须重写,语法不会报错)

抽象类和接口
抽象类的关键字:abstract
1.抽象类可以有抽象方法。
2.抽象类可以有非抽象方法。
3.抽象方法不可有方法体(没有实现,只是个声明而已)
4.抽象类当然可以有抽象方法。
5.抽象方法必须放在抽象类中。
6.不能直接实例化一个抽象类。(可以实例化他的子类)

virtual和abstract都能实现多态机制
1.abstract修饰的方法,子类必须强制进行重写。因为abstract没有方法体,除非子类也是抽象的
2.virtual修饰方法子类可以不重写
3.abstra比virtual更抽象
4。如果重写都用相同的关键字 override

 

 

 

posted @ 2011-11-03 20:02  坏小子小明  阅读(231)  评论(0编辑  收藏  举报