泛型语法总结与使用举例

泛型(Generic)是允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。

也就是说,你可以先定义一个类,类名后跟<泛型列表(如T,M等等)>的形式确定类的类型为泛型列表名字类型,然后实际使用类定义对象时,再用实际的类型去替换泛型列表里的名字。定义泛型方法与定义泛型类相似,调用的时候再用具体的类型进行替换,例如:

static void Swap<T>(ref T lhs, ref T rhs)
        {
            T temp;
            temp = lhs;
            lhs = rhs;
            rhs = temp;
        }
// 调用swap
Swap<int>(ref a, ref b);
Swap<char>(ref c, ref d);

我们在编写程序时,经常会遇到功能非常相似的模块,只是它们处理的数据不一样。但我们没有办法,只能分别写多个方法来处理不同的数据类型。那么问题来了,有没有一种办法,用同一个方法来处理传入不同种类型参数的办法呢?泛型的出现就是专门来解决这个问题的,所以微软还是很贴心的。

以下是泛型类使用说明和举例。

定义格式:
public class 泛型类名<泛型列表(例如T,M……)>                 //定义泛型类,跟定义普通类一样,只是泛型列表先取类型名字
{
public 泛型类名(数据类型    参数名)
                         //此处是泛型类的构造方法
{
构造方法体……;
}
public T functionA(数据类型    参数名)
                   //定义T类型方法
{
方法体……;
}
public 数据类型 functionB(数据类型(可以是泛型列表里的类型,如T)    参数名)
   //此处是普通方法
{
方法体……;
}
}


使用格式:
泛型类名<int(或其他数据类型)> 泛型对象名(例如testA)=new 泛型类名<int>(实参)    //此时T已被int替换
int cc=8;
testA.functionA(cc);                                                   //由于T被int替换,所以可以调用functionA,并传入int实参

testA.functionB(cc);                                                  //由于T被int替换,所以传入int实参

应用举例:

class fanxingTest<T>
    {
        private T[] testArray;
        public fanxingTest(int size)
        {
            testArray = new T[size];
        }

        public T functionA(int a)
        {
            return testArray[a];
        }

        public void functionB(int b, T xingcan)
        {
            testArray[b] = xingcan;
        }

    }

 class Program
     {
        static void Main(string[] args)
        {
            fanxingTest<int> intArray = new fanxingTest<int>(8);
            intArray.functionB(0, 112);
            Console.WriteLine(intArray.functionA(0));
            Console.ReadKey();
        }

     }

注:这里定义泛型类fanxingTest对象intArray时,int型替换了泛型列表里的T类型。灵活运用泛型,可以优化代码,减少代码量,提高效率

猜你喜欢

转载自blog.csdn.net/jimson_zhu/article/details/80163494