读书人

C#高级程序设计(3)泛型基础

发布时间: 2012-09-12 09:21:30 作者: rapoo

C#高级程序设计(三)——泛型基础

在C#引入泛型之前,如果一个类或者一个方法想要支持多种类型,它就不得不把相应的参数或者返回值定义为object类型,这就意味着代码在执行的过程中需要很多的转型,并不是说你的代码一定不要用到转型,但是转型确实会带来很多潜在的问题,因为它将本该属于编译时的类型检查延迟到了运行时,而且也会带来一定的性能问题(装箱和拆箱)。

C#2引入了泛型,包括两种形式的泛型:泛型类型和泛型方法。下面说一下和泛型有关的一些特性:

一、泛型约束

C#泛型支持四种类型的约束,但是它们使用同样的语法:

引用类型约束

对于引用类型的约束,泛型对象之间可以通过==和!=进行比较,但是需要注意的是,除非指定了其它约束,否则只会比较引用本身(即使引用对象类型重载了比较方法),使用转换类型约束,重载的比较方法才会被编译器调用。

static bool AreReferencesEqual<T>(T first, T second) where T : class        {            return first == second;        }string str = "World";            string str1 = "Hello" + str;            string str2 = "Hello" + str;            Console.WriteLine(str1 == str2);            Console.WriteLine(AreReferencesEqual(str1, str2)); Output:TrueFalse




读书人网 >C#

热点推荐