我正在创建一个派生自的抽象类。我有一个Value
属性,可以是多种数据类型。我看到一篇关于泛型的文章,我只是想知道我的理解是否正确。
是否有摘要:
BaseClass<T>
并继承它:
InheritingClass: BaseClass<int>
基本等同于:在BaseClass中定义类型T
的任何地方,当通过InheritingClass 使用时,将其视为类型int
?
这是我的理解,我只是想确保在构建其余的这些类之前这是正确的,并且发现我已经离开了。这是我第一次使用仿制药。
答案 0 :(得分:5)
不,它没有;这意味着您的班级特别仅从BaseClass<int>
继承。如果您在T
中定义泛型类型参数InheritingClass
,请执行以下操作:
InheritingClass<T> : BaseClass<int>
然后该类型参数仅适用于InheritingClass
及其自己的成员,并且不以任何方式适用于BaseClass
。 T
中的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
“泛型允许您定义类型安全的数据结构,而无需提交实际的数据类型。”