以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Dot NET,C#,ASP,VB 』 (http://bbs.xml.org.cn/list.asp?boardid=43) ---- GetStartWith C# 泛型(1) (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11903) |
-- 作者:admin -- 发布时间:11/9/2004 2:26:00 AM -- GetStartWith C# 泛型(1) 发信人: Nineteen (-_-#!), 信区: DotNET 标 题: GetStartWith C# 泛型(1) 发信站: BBS 水木清华站 (Sun Jul 11 21:49:53 2004), 站内 GetStartWith C# 泛型(1) 其实就是我一边看msdn,一边写两句程序,一边写这篇东西.省了大家读english了. 偶没有功劳也有苦劳,有什么错误的地方,大家就不要拍板砖了,^_^ 泛型(Generics)是ms c#2.0的新特性(vb dotnet....),msdn for visual studio 2005 beta1上讲到,这家伙最主要的优点是使我们的代码降低了在运行时做类型转 换的危险,并且大大减少了装箱(boxing)操作. //ok,我们先整一个HelloWorld出来. using System; namespace ConsoleApplication1 { class Program<T> { public void PrintMessage(T t) { string str = System.Convert.ToString(t); Console.WriteLine(str); Console.ReadLine(); } } class main { static void Main() { Program<string> p = new Program<string>(); p.PrintMessage("Hello World"); } } } ^_^,我刚开始整的时候,第一个错误就是把Main()函数扔到class Program<T>里面去了 代码看起来可能有点古怪,如果你没有搞过c++ Templates的话.你只要把T看成一种公共 类型(例如int)就ok了.泛型(Generics)的基本语法就是这个样子,没啥. 我们现在可以看看泛型(Generics)的两点优点: 第一,我们在搞framework1.1的时候,使用一个ArrayList一般都这么用: ArrayList intAl = new ArrayList(); intAl.Add(1); intAl.Add(2); ArrayList strAl = new ArrayList(); strAl.Add("hello baby"); strAl.Add("pig"); 谁也不会这么用: ArrayList al = new ArrayList(); al.Add(1); al.Add("这么用会死的狠难看"); 死的会难看显而易见了: int total; foreach(int i in al) { total += i; } 这种错误,只会在运行时才会被发现,编译时就发现多好啊,老板从来都不 知道我犯了这样的错误,嘿嘿 2.0的做法是: List<int> ls = new List<int>(); ls.Add(1); 第二,我们知道,ArrayList的items是object,是引用.这样,当我们在ArrayList 中Add值类型的时候,就得执行装箱操作(boxing operation),当我们从ArrayList中 取值的时候,还得拆箱子,效率当然是龌龊了.泛型,恰恰可以避免这类操作,爽. MSDN上,按顺序来该"Generic Type Parameters (C#)"了,这一章没劲,略过 -_-v 我考,下一章太长了,明晚上有时间偶继续 -- 长夜漫漫,无心睡眠……饿!非常的饿...饿死我了 ~~~><~~~
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.250ms |