泛型的理解

泛型:
一直对这个概念都觉着迷糊,经过最近的阅读,自己有了一定的理解,现分享给大家。
从字面的意思理解来看,泛型,泛就是模糊、暂不确定暂定的意思。本人这样理解为,
使用泛型就是,定义的一个类型,类型暂不确定,给使用给一个占位符给代替,在使用的时候可以给确定其定义的类型。
下面附上eg:

public static PageList<T> ToPageList<T>(this IQueryable<T>
source, int page, int size)
{
if (page <= 0 || size
<= 0)
{
return new PageList<T>(new
List<T>().AsQueryable(), 1, 10);
}
else

{
return new PageList<T>(source, page,
size);
}
}

public static PageList<T> ToPageList<T>(this
IList<T> source, int page, int size, int count)
{

if (page <= 0 || size <= 0)
{
return
new PageList<T>(new List<T>().AsQueryable(), 1, 10);

}
else
{
return new
PageList<T>(source, page, size, count);
}
}

public static PageList<T> ToPageList<T>(this
List<T> source, int page, int size, int count)
{

if (page <= 0 || size <= 0)
{
return new
PageList<T>(new List<T>().AsQueryable(), 1, 10);

}
else
{
return new
PageList<T>(source, page, size, count);
}
}

public static PageList<T> ToPageList<T>(this
IEnumerable<T> source, int page, int size, int count)
{

if (page <= 0 || size <= 0)
{

return new PageList<T>(new List<T>().AsQueryable(), 1, 10);

}
else
{
return new
PageList<T>(source, page, size, count);
}
}

在这段代码中,使用的是泛型方法ToPageList<T>,定义的这个方法在使用的过程中给其使用到的实际的参数(类型参数)有IQueryable<T>、List<T>、IList<T>、IEnumerable<T>。
这与通常的那些定义的最大区别是,方法的定义实现过程只有一个。但是它具有处理不同的数据类型数据的能力。
从白话文的理解之后,看一下官方的解释。
泛型为使用c#语言编写面向对象程序增加了极大的效力和灵活性。允许程序员在强类型程序设计语言中编写代码时《定义一些可变部分》,定义的实际的数据类型的规约延迟至泛型的实例被创建时才确定。

将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了(将泛型理解为)《类型参数》这个概念。

泛型是具有占位符(类型参数)的《类、结构、接口和方法》,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型及其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其某个形参的类型。

上面是一个方法泛型,经常看到的是泛型集合,集合泛型,也就是泛型一般都是和集合类型在一起使用的。
最常见的泛型集合类List<T>:
static
void Main(string[] args)
{
List<int> l = new
List<int>();
l.Add(1);
}

另一个比较常用的泛型集合类是Dictionary<T,T>,用于保存键值对:
static void Main(string[]
args)
{
Dictionary<int, string> dict = new Dictionary<int,
string>();
dict.Add(1, "SomeBook1");
dict.Add(2,
"SomeBook2");
dict.Add(3, "SomeBook3");


Console.WriteLine(dict[2]);//output:SomeBook2
dict[2] =
"SomeCD1";//modify
Console.WriteLine(dict[2]);//output:SomeCD1


dict.Remove(2);//delete

foreach (KeyValuePair<int, string> kv
in dict)
{
Console.WriteLine("Key = {0}, Value = {1}",kv.Key,
kv.Value);
}
}

泛型的理解,布布扣,bubuko.com

时间: 2024-10-16 17:50:29

泛型的理解的相关文章

对java泛型的理解

自jdk1.6之后泛型就被广泛使用了,刚开始也是这么稀里糊涂的学了但是老是搞不懂其中的奥妙,后来随着项目经验的增多慢慢的才体会到了泛型的各种好处,看了不少项目封装的底层才发现原来泛型一般和接口混合使用来满足标准制定和参数多样化这样的代码需求.弄清楚之后我自己也动手实际体验了一下,觉得还是挺简单的.接下来就分享下我学泛型的心得,写的不好大家可以指出来. 1 标识接口 虽然叫标识接口但是这个java类不仅仅局限于interface,class也是OK的,选择接口还是类关键看自己的选择:下面是我定义的

Java中泛型的理解

Java中的泛型,本质上来说,就是是参数化类型,就是说所操作的数据类型被指定为一个参数,而不是确定的某种类型.这种数据类型可以用在类.接口和方法创建中.即泛型类.泛型接口.泛型方法.这样说可能不够生动,来举些例子说明一下. 例子一 我们通过 例子一 来简单看看泛型的应用场景.下面的情况中,没有使用泛型: public class FanXingTest { public static void main(String[] args) { ArrayList arrayList = new Arr

C#基础:泛型的理解和使用

日常生活中的事物都是有类型的,比如我们说“一个女人”,那么“女”就是这个人的类型.我们可以说“女人都是水做的”,那么听者都知道这是在说“女”这种类型的人.再比如你去肉店买肉,你可以对老板说“我要十斤猪肉”,那么老板一定知道你是在要“猪”这种类型的肉. 日常生活中的这些语言都是带有类型的,但是在日常生活中还有一些语言是不带类型的.比如我们经常说“人是贪婪的”,这里的人就没有类型之分,听者都知道是指所有的人;我们也可以在肉店里指着猪肉说“给我来十斤肉”,肉店老板同样知道你要的是猪肉. 程序语言必须能

C#三十二 泛型的理解和使用

日常生活中的事物都是有类型的,比如我们说"一个女人",那么"女"就是这个人的类型.我们可以说"女人都是水做的",那么听者都知道这是在说"女"这种类型的人.再比如你去肉店买肉,你可以对老板说"我要十斤猪肉",那么老板一定知道你是在要"猪"这种类型的肉.日常生活中的这些语言都是带有类型的,但是在日常生活中还有一些语言是不带类型的.比如我们经常说"人是贪婪的",这里的人就没

泛型的理解和用法

//看了别人写的,结合自己的理解加了和减了一点东西 泛型: 1.为何有泛型? 首先,泛型是在编译期间进行校验的以保证类型安全. 第二就是,集合不会保证对象的类型,统一用父类object类型来指代,由于java的特性,在编译期间,父类和子类都可以用父类来指代,虽然运行时都是自己的实际类型,集合这个是这样的,他们用object这个统一的父类来指代,但是在编译期间你要使用子类特有的方法时的话还是要转换成子类类型,现在问题来了,集合类里面什么元素几乎都可以添加,毕竟都是object的子类,但是我们要使用

Java:泛型的理解

本文源自参考<Think in Java>,多篇博文以及阅读源码的总结 前言 Java中的泛型每各人都在使用,但是它底层的实现方法是什么呢,为何要这样实现,这样实现的优缺点有哪些,怎么解决泛型带来的问题.带着好奇,我查阅资料进行了初步的学习,在此与诸位探讨. 一 类型参数 学过JAVA的人都知道泛型,明白大概怎么使用.在类上为:class 类名 {},在方法上为:public void 方法名 (T x){}.泛型的实现使得类型变成了参数可以传入,使得类功能多样化. 具体可分为5种情况: T是

Java泛型深入理解

Java泛型是Java1.5引入的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.泛型的类型参数只能是类(引用)类型(包括自定义类),不能是基本数据类型.Java语言引入泛型的好处是安全简单. 转载自:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html

对C#中的泛型的理解

泛型概念: 泛型是公共语言运行时和编程语言提供的一种机制,它支持另外1种形式的代码重用,也就是算法重用. 泛型包含泛型类,泛型接口,泛型委托,泛型方法,并非只包含简单的泛型类.在C#中,其他例如,属性,索引器,事件,操作符方法,构造器本身不能有类型参数T. T(类型参数),它的目的在于指明它操作的是一个未指定的数据类型,在源代码中能够使用数据类型的地方都可以使用它.   为什么要使用泛型 通过使用泛型,可以极大地提高代码的重用度,同时还可以获得强类型的支持,提升了应用程序的性能,避免了隐式的装箱

java泛型的理解

最近在看视频,看到比较经典的比大小问题.输入两个数,返回大的数,类型可以为int,long,float等. 通常的教程中用这个例子引入了构造函数以及重载的概念,在学习完泛型后,我想到能不能写一个泛型的方法,用以实现比较. 为了完成这个任务,我们首先需要了解一下泛型. 什么的泛型 泛型是java语言系统的一种扩展,支持创建可以按照类型进行参数化的类. 泛型的好处 泛型的好处也是显而易见的, 首先可以扩充代码的通用性,通过泛型可以使方法支持更多的类型. 泛型有助于增强类型安全,编译器可以对类型进行比