文章分类 - 泛型
摘要:泛型方法 在C#2.0中,方法可以定义特定于其执行范围的泛型参数,如下所示:public class MyClass { //指定MyMethod方法用以执行类型为X的参数 public void MyMethod(X x) { ...
阅读全文
摘要:new关键字引起了大家的不少关注,尤其感谢Anders Liu的 补充,让我感觉博客园赋予的交流平台真的无所不在。所以,我们就有必要继续这个话题,把我认为最值得关注的关键字开展下去,本文的重点是访问关键字 (Access Keywords):base和this。虽然访问关键字不是很难理解的话题,我们...
阅读全文
摘要:C#自定义泛型类用得最广泛的就是在集合(Collection)中。本文介绍了C#自定义泛型Generic的用法。Generic是Framework 2.0的新元素,中文名字称之为“泛型” ,特征是一个带有尖括号的类,比如ListC#自定义泛型类用得最广泛,就是集合(Collection)中。实际上,...
阅读全文
摘要:本文介绍了如何定义一个C#泛型类,以及实现泛型类的继承、方法和约束。泛型类和泛型方法兼复用性、类型安全和高效率于一身,是与之对应的非泛型的类和方法所不及。泛型广泛用于容器(collections)和对容器操作的方 法中。.NET框架2.0的类库提供一个新的命名空间System.Collections...
阅读全文
摘要:目录创建泛型类泛型类的特性泛型接口泛型方法泛型委托泛型并不是一个全新的结构,其他语言中也有类似的概念,比如C++中的模板,但C++中的模板和.NET中的泛型还是有很的的区别的,下面就对泛型做些研究。创建泛型类学习数据结构时,最为常见的就是链表,我们就以链表为例来描述泛型类创建的细节。首先,我们知道,...
阅读全文
摘要:我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们 没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型 的出现就是专门解决这个问题的。读完本篇文章,你会对泛型有更深的了解。为什么要使用泛型为了了解这个问题,我们先看下面的代码,代码省略了一些内容,但功能是实现一个栈,这个栈只能处理int数据类型:public class Stack { private int[] m_item; public int Pop(){.
阅读全文
摘要:型是C# 2.0版本才开始有的语言特性,不过“泛型”这个概念并不是最先出现在编程领域的,例如C++中的模板。List 就是一个泛型应用。你可以在需要时声明一个强类型的List实例,然后随意地往里面添加、删除和查询同一类型的元素。泛型就是一个非常 方便的数据结构,长期使用C#的朋友大多都常常用到泛型。本文就简单地通过创建自己的泛型类来介绍一下泛型,希望能够加深初学者对泛型(这个名字很奇怪的 东西)的认识和理解。用到泛型的时候你就会发现,泛型其实就像一个口袋,你可以很方便地往里面装东西,只是在第一次使用这个口袋的时候 要注意声明它只能装什么样类型的东西,以后就不能装错了。那么我们就用钱包为例吧,我
阅读全文
摘要:协变(Covariance)和逆变(Contravariance)的十万个为什么 你可以从两个盒子中抓住现象:逻辑盒子或者数学盒子。逻辑盒子看上去有些粗糙,但是很坚固;数学盒子很精致,却有些脆弱。数学盒子可以把一个问题漂亮地包装起来,但如果没有逻辑盒子首先抓住问题,数学盒子自己抓不住问题本身。 ——John R. Platt摘要 ● 协变和逆变的定义是什么?给我们带来了什么便利?如何应用? ● 对于可变的泛型接口,为什么要区分成协变的和逆变的两种?只要一种不是更方便吗? ● 为什么还有不可变的泛型接口,为什么...
阅读全文