看了一上午,做了一个Test,理解泛型。。。。。。。。。散分了
using System;using System.Collections;using System.Collections.Generic;using System.Text;//泛型测试2009.1.6namespace ConsoleApplication1{ class Test { static void Main(string[] args) { ArrayList Array = new ArrayList(); Array.Add(2); Array.Add(8); Array.Add("HELLO,I AM A TYPE OF STRING!"); foreach (int p in Array) { Console.WriteLine(p); } //这里进行onboxing取消装箱,foreach (int p in Array),其中int p的类型int是foreach执行拆箱的强制类型, //因此如果这里是创建一个创异类集合,必定会错误,因为"HELLO,WORLD"无法转换为int Console.WriteLine(Int32.Parse(Array[0].ToString())); Console.WriteLine(Int32.Parse(Array[1].ToString())); //string aa = Array[2];//为了证明加入集合的字符串已经不再是字符串,这里是装箱过的类型object,所以编译错误,无法将object隐式转换成string, Console.WriteLine(Array[2]);//WriteLine接受参数本身就是object,这里正常输出,如果输出字符串 } }} class Test2 { static void Main(string[] args) { List<int> List3 = new List<int>(); List3.Add(0); List3.Add(1); List3.Add(2); List3.Add("i am not here?");//编译器不能通过。 int the1 = List3[0];//呵呵,和上面相同的测试方式,这里说明加入的集合数据没有进行装箱操作,集合元素本身的确是一个int类型 foreach (int p in List3) { Console.WriteLine(p); } } } class Test3 { static void Main(string[] args) { string[] parm1 = { "I AM STRING1", "I AM STRING2", "I AM STRING3" }; Test3.Insert<string>(parm1); } public static void Insert<T>(T[] parms) { List<T> ListT = new List<T>(); if (parms.Length > 0) { for (int i=0; i< parms.Length; i++) { ListT.Add(parms[i]); } } foreach (T p in ListT) { Console.WriteLine(p); } } }
.NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList。
您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
可以对泛型类进行约束以访问特定数据类型的方法。
关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。
A.减少了装箱拆箱;
B.编译时类型检查.
[解决办法]
顶下~~
[解决办法]
up
[解决办法]
够 弓 虽, 顶一个。
不过 泛型的产生并不全是为了 减少装拆箱。(装拆箱提高的性能是补认可的。但在引用类型上,泛型就并没有提高多少)
其实我觉得他最大的好处是为了类型的安全。
[解决办法]
收藏
[解决办法]
学习
[解决办法]
我来接分的。
[解决办法]
xx
[解决办法]
jf
[解决办法]
JF~
[解决办法]
43楼正解
[解决办法]
学习...
[解决办法]