+ -
当前位置:首页 → 问答吧 → 泛型类和类有什么不同啊

泛型类和类有什么不同啊

时间:2011-12-15

来源:互联网

泛型类和类有什么不同啊

作者: yanchengcs   发布时间: 2011-12-15

泛型类和类有什么不同啊

作者: yanchengcs   发布时间: 2011-12-16

该回复于2011-12-16 09:21:10被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • sp1234
  • (强烈鄙视中国院士老爷们)
  • 等 级:
  • 3

#3楼 得分:0回复于:2011-12-16 08:56:37
泛型类也是类,只不过你所要的类不是泛型类。比如说 List<string>这是你要的类,运行时的代码不是在什么 List<T> 上操作,而是在 List<T> 这个类上操作。List<T>顶多算是一种模版而已,并不是真正的最终对象的类型。

作者: SomethingJack   发布时间: 2011-12-16

而是在 List<T> 这个类上操作 --> 而是在 List<string> 这个类上操作

如果你不知道 List<string> 是一个类型,而只知道说 List<T> 是一个类型,这可能就是问题的根源。

作者: sp1234   发布时间: 2011-12-16

一个有索引 一个没有的 
泛型集合可以根据索引来遍历查找自己所需的内容的

作者: sp1234   发布时间: 2011-12-16

中间代码 泛型是用占位符来标识的。

作者: fei419125524   发布时间: 2011-12-16

运行时和编译时!

作者: sunzongbao2007   发布时间: 2011-12-16

引用 7 楼 zerokiseki 的回复:
运行时和编译时!

不明白这个意思

作者: ZeroKiseki   发布时间: 2011-12-16

你应该先去学点哲学或软工,搞明白“泛化”这个词是什么意思有什么意义...你就不会再有这种问题了...

ps:5楼的纯属胡说八道...

作者: yanchengcs   发布时间: 2011-12-16

泛化是和继承相关,楼主是说泛型。

作者: vrhero   发布时间: 2011-12-16

引用 7 楼 zerokiseki 的回复:

运行时和编译时!


本质的区别在于:普通的类是在编译时,我的类型是确定的。但我们现实中的某些应用场景下可能需要我的对象来根据实际需要去确定它的类型,如下:

class A<T>
{
  public T GetCount()
  {
  //return ToDO
  }
}

实际上编译时并不能确定 GetCount()方法返回的类型,但是我这样用:
A<int> a=new A<int>();
这样我就在运行时确定了该类的类型

作者: hztltgg   发布时间: 2011-12-16

引用 10 楼 hztltgg 的回复:

泛化是和继承相关,楼主是说泛型。

谁告诉你的?你也去学学哲学吧...别被教科书教傻了...

作者: ZeroKiseki   发布时间: 2011-12-16

泛型也不能在运行时确定类型的吧,
t="int"
A<t> a=new A<t>();
这样才叫运行时,反射才有运行时的功能

作者: vrhero   发布时间: 2011-12-16

引用 12 楼 vrhero 的回复:
引用 10 楼 hztltgg 的回复:

泛化是和继承相关,楼主是说泛型。

谁告诉你的?你也去学学哲学吧...别被教科书教傻了...


我搞错了?!UML里才有泛化的说法,和泛型除了都姓泛以外,没有什么交集吧,
List<T> 并不继承List,我想我没傻吧

作者: hztltgg   发布时间: 2011-12-16

这个运行时解释有问题了,(⊙o⊙)…,正解如下,O(∩_∩)O~

看下MSDN吧:
运行时中的泛型(C# 编程指南)

泛型类

作者: hztltgg   发布时间: 2011-12-16

UML?笑话...泛化的概念出现时,计算机还没发明呢,UML的外婆都不知道在谁家呢...

只看专业书确实会把人看傻的...

作者: ZeroKiseki   发布时间: 2011-12-16

唉,我是说泛化目前出现的场景基本上是在说UML的时候,.net里都是说继承。

而楼主是说泛型,实在搞不懂不把泛型和泛化混在一起是就是傻的原因!

作者: vrhero   发布时间: 2011-12-16

我也来说说自己的一点理解

比如List<string>和ArrayList
ArrayList.add(string)每次都是要生成一个string类型对象,然后加入到ArrayList中
而List<string>.add(string)加入List<string>时并不知道是string类型对象,是弱类型的,运行时才能确定对象类型
所以List<string>效率比较高

作者: hztltgg   发布时间: 2011-12-16