您的位置:首页 > 编程语言 > ASP

[学习笔记]Asp.net(C#)菜鸟进级系列之引用类型

2006-04-25 23:03 585 查看
引用类型包括:
object Type、class Type、interface Type、delegate Type、string Type、Array Type
其中属于系统内建类型的只有string和object类型。
1、object Type(System.Object)
它是所有数据类型(包括预定义的和自定义的数据类型)的基类型。可以把任何类型的数值赋给object类型的变量。
2、string Type(System.String)
用来表示unicode字符的字符串
注:string类型虽然是引用类型,但是在对string类型的变量进行比较(==或!=)时,参与比较的是string的值,而不是引用。
如 :string myString="how are you!";
string mySecString="how are you!";
Console.WriteLine(myString==mySecString);//输出true
Console.WriteLine((object)myString==mySecString);//输出false;
使用"[]“操作符可以操作string中的单个字符(此时string可以看成是一个字符数组)。
字符字面值由两种使用方法:1、直接家引号用(这时需要处理转义字符)2、由@+""使用(这时内部不处理转义字符)。
3、class Type
只能单继承。类成员默认的修饰府是private。
4、delegate Type
使用代表允许外部用一个代表对象封装一个方法的引用,再通过使用这个代表对象来调用被封装的方法。
声明一个代表就相当于定义一个类,改类型封装了个方法以及它的参数和返回类型,对于静态方法,它直接封装了要调用的方法,对于实例方法,它封装了实例以及其方法。如果有了代表以及其方法和返回类型,就可以用它们来调用代表。
它和c/c++中的指针相似,只不过它是面向对象的、类型保护并且安全性也比指针搞一些。
说明:代表不知道也不关心其引用对象的的类,任何对象都可以,只要方法的返回类型和参数和代表的一致就可以。
对于类型相同并且返回值为void的代表类型,可以对其复合(用+复合代表,用-从复合代表中删除一个代表)。(由于都是void对象,复合相当于把两个方法绑到一块儿了……)
5、interface Type
当一个类要实现两个接口,而这两个接口以相同名称的成员(如:相同的方法名…)时,必须要显式实现接口。
对于显式实现大方法,不能够通过类的实例来访问方法,必须通过接口的实例来访问。
小结:
整个c#的数据类型基本上也温习了一遍,深入了解了它的基本结构,算是对c#的经络认识的清楚一点了吧(汗……)!这些类型在系统使用往内存加载时,值类型是直接将变量放入堆栈中,占用的内存空间相对较小,存取速度也快一点。而引用类型则是把对数据的引用放在栈里,实例的对象放到堆里,栈里只用来存放要指向堆中实例的首地址(所以两个引用类型变量指向同一个堆的地址时,操作一个另一个也要受到影响)。
值类型和引用类型之间可以相互转换(也就是c#中的boxing和unboxing机制)。从值类型到引用类型转换时(boxing)是把值类型复制到堆空间中,然后再在栈里添加一个对这个堆首地址的引用。从引用类型向值类型转换时(unboxing)则相反。换句话来说:boxing是把一个值类型隐式转换成一个object对象,unboxing则是将一个object类型显式转换成一个值类型。它们是互逆过程。
补充:
(引用自msdn)装箱和取消装箱都是需要大量运算的过程。对值类型进行装.箱时,必须创建一个全新的对象。此操作所需时间可比赋值操作长 20 倍。取消装箱时,强制转换过程所需时间可达赋值操作的四倍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: