摘要: 集 合List和ArrayList是与数组相当的集合类。还有其他类型的集合:队列、栈、链表和字典。集合接口和类型集合类可以组合为集合,存储Object类型的元素和泛型集合类。在CLR 2.0之前,不存在泛型。现在泛型集合类通常是集合的首选类型。泛型集合类是类型安全的,如果使用值类型,是不需要装箱操作的。如果要在集合中添加不同类型的对象,且这些对象不是相互派生的,例如在集合中添加int和string... 阅读全文
posted @ 2009-07-09 16:40 Athrun 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 泛 型CLR 2.0的一个新特性是泛型。在.CLR 1.0中,要创建一个灵活的类或方法,但该类或方法在编译期间不知道使用什么类,就必须以Object类为基础。而Object类在编译期间没有类型安全性,因此必须进行强制类型转换。另外,给值类型使用Object类会有性能损失。CLR 2.0(.NET 3.5基于CLR 2.0)提供了泛型。有了泛型,就不再需要Object类了。泛型类使用泛型类型,并可以... 阅读全文
posted @ 2009-07-09 15:37 Athrun 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 字符串和正则表达式创建字符串string类存在一个问题:重复修改给定的字符串,效率会很低,它实际上是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。在使用String类构造一个字符串时,要给它分配足够的内存来保存字符串,但StringBuilder通常分配的内存会比需要的更多。开发人员可以选择显式指定StringBuilder要分配多少内存,但如果没有显式指定,存储单... 阅读全文
posted @ 2009-07-09 14:45 Athrun 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 在C#中声明委托首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托代表了哪种类型的方法,然后创建该委托的一个或多个实例。实际上,"定义一个委托"是指"定义一个新类"。委托实现为派生自基类System. Multicast Delegate的类,System.MulticastDelegate又派生自基类System.Delegate。C#编译器知道这个类,会使用其委托语法,因此我们... 阅读全文
posted @ 2009-07-09 00:48 Athrun 阅读(355) 评论(0) 推荐(1) 编辑
摘要: 运算符和类型强制转换checked和unchecked运算符为此,C#提供了checked和unchecked运算符。如果把一个代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出异常。is运算符is运算符可以检查对象是否与特定的类型兼容。"兼容"表示对象是该类型,或者派生于该类型。as运算符as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成... 阅读全文
posted @ 2009-07-09 00:11 Athrun 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 数 组如果需要使用同一类型的多个对象,就可以使用集合和数组。C#用特殊的记号声明和使用数组。Array类在后台发挥作用,为数组中元素的排序和过滤提供了几个方法。简单数组在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。声明了数组后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始... 阅读全文
posted @ 2009-07-09 00:09 Athrun 阅读(367) 评论(0) 推荐(0) 编辑