泛型:我不太确定<t>的作用 - 你能解释一下吗?</t>

时间:2012-06-29 21:38:26

标签: c# generics inheritance .net-3.5

我正在创建一个派生自的抽象类。我有一个Value属性,可以是多种数据类型。我看到一篇关于泛型的文章,我只是想知道我的理解是否正确。

是否有摘要:

BaseClass<T>

并继承它:

InheritingClass: BaseClass<int>

基本等同于:在BaseClass中定义类型T的任何地方,当通过InheritingClass 使用时,将其视为类型int

这是我的理解,我只是想确保在构建其余的这些类之前这是正确的,并且发现我已经离开了。这是我第一次使用仿制药。

3 个答案:

答案 0 :(得分:5)

不,它没有;这意味着您的班级特别仅从BaseClass<int>继承。如果您在T中定义泛型类型参数InheritingClass,请执行以下操作:

InheritingClass<T> : BaseClass<int>

然后该类型参数仅适用于InheritingClass及其自己的成员,并且不以任何方式适用于BaseClassT中的InheritingClass因父母身份而自动解析为int。换句话说,这两个类型参数是相互独立的。

答案 1 :(得分:2)

  

在InheritingClass中存在类型T的任何地方,将其视为类型int

正如@BoltClock已经提到的,情况并非如此。不过,我想知道你是不是想说:

  

BaseClass中存在类型T的任何地方,将其视为类型int

如果这是你的意思,那么你确实是对的。

答案 2 :(得分:0)

泛型用于具有类型安全的类,可以轻松定制以用于任何类型。 “T”是您要与该类一起使用的类型的占位符。

http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

“泛型允许您定义类型安全的数据结构,而无需提交实际的数据类型。”