首页 学海无涯 C#基础 【C#高级编程】泛型
【C#高级编程】泛型
摘要 本文介绍C#高级编程之泛型。

简介

泛型是.NET Framework 2.0引入的新特性,使得在设计类和方法时,不必确定具体的参数类型(延迟声明), 一个类或方法可以满足不同类型需求。

问题背景

下面3个方法的分别在控制台打印int、string、DateTime类型的参数值:

void ShowInt(int val) { Console.WriteLine(val); }
void ShowString(string val) { Console.WriteLine(val); }
void ShowDateTime(DateTime val) { Console.WriteLine(val); }

如果还想打印long、char那么又得写两个方法,很明显有点费事。

解决方法1(object):

void Show(object val) { Console.WriteLine(val); }

以object作为参数的类型,不管是打印int还是string,都可以通过这一个方法实现:

Show(1);
Show("1");
Show(DateTime.Now);

这就达到了一个方法满足多种类型需求的作用。

但是,相比之前那三个方法,以object类型作为参数,在调用方法时会产生一个装箱和拆箱的过程,势必会影响性能。

解决方法2(泛型):

void Show<T>(T val) { Console.WriteLine(val); }

在编写Show方法时,可以使用T作为占位符,先不指定T的具体类型,等到调用的时候再指定具体类型。如:

Show<int>(1);

同样当我们想打印string类型的时候:

Show<string>("1");

同时泛型方法还可以从参数类型来推导具体的类型参数,所以就可以简化调用: 

Show(1);
Show("1");

这时候T分别是int和string类型。

这样同样达到了以object作为参数类型时的效果,同时它又不会发生装箱和拆箱的操作,所以性能方面也不会有损失,真正达到了事半功倍的效果。

版权声明:本文由不落阁原创出品,转载请注明出处!

本文链接:http://www.leo96.com/article/detail/53

来说两句吧
最新评论
  • 不想知道!
    不想知道!

    不愧是C# 2.0劳动人名智慧的结晶