c#2.0新特性:(一)泛型(Generics)

为了提高应用程序的效率和可用性,C#2.0引入了泛型概念.C#泛型有些类似C++的摸版。
(一)特点  
      泛型具有以下功能特点:
     一、使用泛型可以定义类型安全的数据结构,而无需使用实际的数据类型。
     二、通过使用泛型,能够将数据类型参数化,以此完成代码重用的目标。这一参数可以应用在类、方法、结构、接口、委托等设计中。
     三、泛型可提供编译期间的类型检查,减少不必要的显式类型转换,减少不必要的装箱操作,从而提高应用程序的运行效率。
(二)泛型集合
      泛型常用于集合应用中。在.NET2.0框架的类库中,提供了一个新的命名空间System.Collections.Generic,其中包含了一些新的基于泛型的容器类,例如:System.Collections.Generic.Stack System.Collections.Generic.Dictionary、System.Collections.Generic.List、System.Collections.Generic.Queue等,这些类库可以在集合中实现泛型。
      下面是一个Stack类具体的应用代码:
         // 实列化Stack类
        System.Collections.Generic.Stack < string >  stringStack = new  System.Collections.Generic.Stack < string > ();
        
// 添加数据
        stringStack.Push( " 常德 " );
        stringStack.Push(
" 北京 " );
        stringStack.Push(
" 武汉 " );
        
// 转换为数组
        Array stringArray;
        stringArray
= stringStack.ToArray();
        
// 显示数组
         foreach ( string  s  in  stringArray)
        
{
            Response.Write(s);
        }
      以上代码中,首先实例化了一个Stack类的stringStack,并且设置其参数是string,这说明该类所实现堆栈的数据类型是string。然后,通过Stack类的Push方法压入3个字符串数据,并且使用ToArray方法,将堆栈中的数据转换到一个数组stringArray中(此时,stringArray是一个字符串数组)。最后,使用Response.Write( )方法将数组中的数据显示出来(逆序显示,这是堆栈的特性)。
      另外,如果要求堆栈中存储的是int类型,那么可以使用同样的方法,只需要修改很少的内容即可实现。 
(三)泛型方法 
      在某些情况下,一个类型参数并不为整个类所必需,而只用于一个特定的方法中。这个情况竟法发上在建立一个需要泛型作为参数的方法时。
      一个泛型方法有一个或多个类型参数,并且在方法名后面由“<”和“>”限定符指定。这个类型参数可以用在参数利表、返回值和方法体中。
     public   void  StackPush < T > (Stack < T >  stack,  params  T[] values)
    
{
        
foreach (T value in values)
        
{
            stack.Push(value);
        }

    }
      使用这个方法,可以将多个元素压入任何Stack<T>中。当调用一个泛型方法时,要在函数的调用中将类型参数放入尖括号中。示例代码如下:

        Stack
< int >  stack  =   new  Stack < int > ();
        StackPush
< int > (stack,  1 2 3 4 );
      在上面的例子中,由于第一个正式参数类型是Stack<int>,并且后面的参数类型都是int,编译器可以推断类型参数一定是int,因此在调用泛型的StackPush方法时可以不用提供类型参数。

        Stack
< int >  stack  =   new  Stack < int > ();
        StackPush(stack, 
1 2 3 4 );

你可能感兴趣的:(generics)