以文本方式查看主题

-  中文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 我考,下一章太长了,明晚上有时间偶继续

--
长夜漫漫,无心睡眠……饿!非常的饿...饿死我了 ~~~><~~~                           


※ 来源:·BBS 水木清华站 smth.org·[FROM: 61.49.237.*]


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms