Lambda表达式学习(补足六个汉字).doc
文本预览下载声明
HYPERLINK /zhouji432600/archive/2010/05/28/1746228.html Lambda表达式学习
项目里面需要经常对一系列同类型集合进行操作 , 如对集合进行增加元素 , 删除集合的指定索引的元素等等. 我们可以使用ArrayList来进行. 如
?
1?ArrayList?stringArrayList = new?ArrayList();2?stringArrayList. Add(大家好);3?stringArrayList. Add(你们好);4?stringArrayList. Add(同志们好);5?string?str1 = (string)stringArrayList[0];//取出一个元素后 , 需要转换一次类型才可以
?
?或者是
?
1?ArrayList?intArrayList = new?ArrayList();2?intArrayList. Add(6);3?intArrayList. Add(8);4?intArrayList. Add(66);5?int?int1 = (int)intArrayList[0];//取出一个元素后 , 需要转换一次类型才可以
?
但是ArrayList中每个元素的类型都是Object(stringArrayList[0]的类型是Object) , 这意味着我们每一次的操作 , 其实都进行了隐式的类型转换 , 加入资料是把普通类型转换成Object类型 , 取出资料是把Object类型转换成普通类型. 于是我在想象 , 如果有一种数组类型 , 在定义的时候 , 可以给出每个元素具体的类型 , 并且在赋值或者取值的时候 , 就是完全按照这个类型进行操作该多好. 在. net2. 0里面 , 我找到了List这个类型. List是一个泛型 , 我们看看List的使用
?
代码
1?Liststring?stringArrayList? = ?new?Liststring();2?stringArrayList. Add(大家好);3?string?str1? = ?stringArrayList[0];//直接赋值成功!因为取出来的就是string4?//或者5?Listint?intArrayList? = ?new?Listint();6?intArrayList. Add(8);7?int?int1?=?intArrayList[0];//直接赋值成功!因为取出来的就是int
?
?
大家可以看出 , List在实例化的时候就需要定义一个类型 , 也就是尖括号中间的东西 , 在增加元素 , 或者获取元素的时候 , 操作的都是最开始定义的那种类型. List便是传说中的泛型类型. 泛型可以用在方法上 , 也可以用在类上. 如果看到某个方法或者类后面带有尖括号的 , 那么这个肯定就是泛型了.
现在 , 我找到了能够有效存储我要操作的集合类型 , 那么我们要解决一些操作了. 我需要对集合进行一个连接输出(把所有的元素连接在一起 , 每个元素之间使用BR来分割) , 还需要知道所有元素的总长度. 显然 , 光一个List类型是解决不了问题的. 于是我自己定义了一个自己的泛型类型
?
代码
?1?///?summary?2?????///?这是一个泛型类 , 类名后面接着一个尖括号里面的那个t , 是我们自己定义的 , 如果你高兴 , 你可以定义w , y , z , WC都没有问题!?3?????///?这个T表示说我们在实例化类的时候 , 需要告诉类 , 我们是用哪一种类型来进行操作. ?4?????///?/summary?5?????///?typeparam?name = T/typeparam?6?????public?class?MyListT?7?????{?8?????????public?ListT?_List?{?get;?set;?}?9?????????public?MyList()10?????????{11?????????????this. _List? = ?new?ListT();12?????????}13?????????///?summary14?????????///?用来连接所有元素用15?????????///?/summary16?????????///?returns连接后的字符串/returns17?????????public?string?JoinOut()18?????????{19?????????????StringBuilder?stbTemp?
显示全部