c#入门学习-泛型

泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。

我的理解就是:比如说一个方法,里面的逻辑都是相同的,然后只是每次传的参数类型不一样,那么按照一般的情况下,就需要重写一个方法,替换参数类型,然后如果使用泛型,就可以先不定义具体的数据类型,等到使用的时候再将具体的数据类型传进来就可以了。

泛型方法:

 
class Simple
{
    static public void ReverseAndPrint<T>(T[] arr)
    {
        Array.Reverse(arr);
        foreach(T item in arr)
        {
            Console.WriteLine("{0},",item.ToString());
        }
        Console.WriteLine("");
    }
}
class Program
{
    static void Main()
    {
        var intArray=new int[]{3,5,7,9,11};
        var stringArray=new string[]{"first","second","third"};
        var doubleArray=new double[]{3.567,7,891,2,345};
        Simple.ReverseAndPrint<int>(intArray);
        Simple.ReverseAndPrint(intArray);
        Simple.ReverseAndPrint<string>(stringArray);
        Simple.ReverseAndPrint(stringArray);
        Simple.ReverseAndPrint<double>(doubleArray);
        Simple.ReverseAndPrint(doubleArray);
    }
}

泛型类:

创建和使用常规的、非泛型的类有两个步骤:声明和创建类的实例。但是泛型类不是实际的类,而是类的模板,所以我们必须从它们构建实际的类类型,然后创建实例。

  • 在某些类型上使用占位符来声明一个类
  • 为占位符提供真实类型。这样就有了真实类的定义,填补了所有的“空缺”。该类型称为构造类型(constructed type)
  • 创建构造类型的实例

声明泛型类

声明一个简单的泛型类和声明普通类差不多,区别如下。

  • 在类名后放置一组尖括号
  • 在尖括号中用逗号分隔的占位符字符串来表示希望提供的类型。这叫做类型参数(type parameter)
  • 在泛型类声明的主体中使用类型参数来表示应该替代的类型
 
class SomeClass<T1,T2>
{
    public T1 SomeVar=new T1();
    public T2 OtherVar=new T2();
}


泛型类型声明中没有特殊的关键字,取而代之的是尖括号中的类型参数列表。

创建构造类型

一旦创建了泛型类型,我们就需要告诉编译器能使用哪些真实类型来替代占位符(类型参数)。

创建构造类型的语法如下,包括列出类名并在尖括号中提供真实类型来替代类型参数。要替代类型参数的真实类型叫做类型实参(type argument)

 
SomeClass<short,int>


创建变量和实例

 
MyNonGenClass myNGC=new MyNonGenClass();

SomeClass<short,int> mySc1=new SomeClass<short,int>();
var                  mySc2=new SomeClass<short,int>();

和非泛型一样,引用和实例可以分开创建。

 
SomeClass<short,int> myInst;
myInst=new SomeClass<short,int>();

可以从同一泛型类型构建不同类类型。每个独立的类类型,就好像它们都有独立的非泛型类声明一样。

 
class SomeClass<T1,T2>
{
...
}
class Program
{
    static void Main()
    {
        var first=new SomeClass<short,int>();
        var second=new SomeClass<int,long>();
    }
}


转自:http://www.cnblogs.com/moonache/p/6385258.html




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值