个人做网站接装修活哪个网站好,惠州网站制作培训,如何制作网站教程视频讲解,个人建站流程详解一.为什么要提出泛型的概念我们在声明对象或者方法中#xff0c;对象中成员变量的定义或者函数参数都传递都要指定具体的对象类型#xff0c;但是有的时候参数的类型是变化的#xff0c;但是实现的功能却又差不多#xff0c;这个时候我们就想#xff0c;是否存在一种东西可… 一.为什么要提出泛型的概念我们在声明对象或者方法中对象中成员变量的定义或者函数参数都传递都要指定具体的对象类型但是有的时候参数的类型是变化的但是实现的功能却又差不多这个时候我们就想是否存在一种东西可以将参数的位置“占住”当传递具体的对象类型是再用这个类型取替换被占住的位置这个时候就提出了泛型的概念是不是有点绕但是看完下面的例子就清除这里表达的内容了泛型有多种表现形式泛型类泛型方法泛型集合泛型委托可以说不懂泛型就没有真正的了解C#,下面让我们来开始泛型的学习吧。二.泛型类泛型方法我们先举个例子我们定义一个类来模拟入栈出栈操作我们操作出栈入栈时要针对各种数据类型int型double 型字符型......总之各种类型都有可能我们不可能针对每个类型都写一个类来操作出栈入栈这显然是不现实的这个是时候就该泛型大显身手发时候了看下面的定义我们在 public class MyStackT 后面加了一个T这个时候这个类就变成了一个泛型类表示一个占位符当我们实例化该类的时候需要传入具体的数据类型我们来看一下泛型类的具体用法:这样泛型类就可以操作int 类型 和 string类型进行出栈入栈操作但代码却不需要改动。三.泛型集合 使用泛型集合首先是是加了类型安全方便编程泛型集合指定了类型后只能将同类型的参数放入集合,泛型集合最常用就是List集合和Dictionary集合我们分别看一下这两种集合。A.LisT 泛型集合说到List泛型集合就不得不说ArrayList集合ArrayList集合在操作是需要进行强制类型极大的降低了代码处理效率所以List集合应运而生让我们看如下代码做个比较除此之外我们一直在讲泛型集合可以保证数据安全和ArrayList相比它的数据到底安全在什么地方呢我们通过下面的例子做进一步说明从例子可以看出ArrayList集合的Add方法参数是object类型所以Teacher的数据类型也可以放进去这显然不是我们想要的但是泛型集合就不一样当占位符被确定的数据类型占用后别的数据类型就添加不到集合中去。List集合的常用方法List集合中有很多方法我们重点将一下Sort方法Sort方法有四个重载方法public void Sort();public void Sort(ComparisonT comparison);public void Sort(IComparerT comparer);public void Sort(int index, int count, IComparerT comparer);我们直接调用Sort方法是按默认升序排序假如某个类实现了IComparable接口那么默认排序就是按照接口中定义的方法来排序看下面的例子输出结果为:0,1,2,3......结果为升序排序输出结果为:a,b,c假如是对象类型呢默认的排序方法为升序排序但是对象之间没有升序的概念这个时候该怎么办呢看下面的代码Students类中实现了泛型接口IComparableT ,在泛型接口的方法中我们可以写排序的方式这样做确实可以解决对象排序的问题但是假如我们的排序条件是变化的这种方式显然又不能满足我们的需求了让我i们接着往下探索如何实现集合对象的动态排序让我们看如下代码我们定义了一个自定义排序类自定义排序类实现了ICompare接口。调用List.Sort的重载方法这里基于接口实现了多态需要好好体会关于集合的排序我们还可以用Linq查询。B.Drictionary 泛型集合 List集合用索引查找元素的方法显然没有办法满足我们的实际需求为了弥补这个缺陷我们引入了字典的概念说到键值对查询又不得不说说Hashtable早期键值对集合都是用Hashtable类来实现的后来泛型集合出现后Dictionary泛型集合取代了Hashtable类让我们来看看两者的区别从例子可以看出Hashtable集合操作都是object的类型在进行对象操作是需要进行强制类型转换但是Dictionary却不一样不需要进行强制类型转换所以可以这样讲Dictionary出现以后可以完全替Hashtable。四.泛型委托 A.自定义泛型委托以上例子就简单展示了自定泛型委托的使用方法但是每次都这这么定义委托似乎很不方便所以微软的工程师预先给我们定义好了几个泛型委托我们可以直接使用大大提高了使用泛型委托的便捷程度。B.Func泛型委托的使用 Func是一个带返回值的泛型委托func有多个重载版本需要注意的是func最后一个参数是返回值类型如果前面有泛型类型的参数这个参数就是委托方法的形参类型简单说func泛型委托就是一个带返回值的方法签名我们先来看看它的简单应用:有人会说这样用似乎没什么意义我们调用方法就可以直接实现功能干嘛还要从委托转一下似乎多此一举但是事实并不是如此让我们看一下Func的复杂用法。现在提出一个需求要求计算数组中任意指定开始位和结束位的“算数和” and 算数积。常规做法是写两个方法分别计算和与积但是还有别的实现方法么,答案是肯定的:其实这里也体现了委托的本质委托本来就是为了把方法当成参数传递而设计的。C.Action泛型委托Action泛型委托和func泛型委托差不多只不过Action是不带返回值的方法的签名看下面的例子我们就可以了解Action泛型委托的用法D.Predicate泛型委托 PredicateT委托定义如下 public delegate bool PredicateT(T obj); 解释此委托返回一个bool值的方法 在实际开发中PredicateT委托变量引用一个“判断条件函数” 在判断条件函数内部书写代码表明函数参数所引用的对象应该满足的条件条件满足时返回true看下面的例子:好的以上就是关于泛型概念的总结希望可以帮到有需要的人。原文地址https://www.cnblogs.com/Artist007/p/11089085.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com