0

I'm creating an abstract class to derive from. I have a Value property that can be numerous data types. I saw an article on generics and I'm just wondering if my understanding is correct.

Does having an abstract:

BaseClass<T>

and inheriting it like:

InheritingClass: BaseClass<int>

basically equate to: anywhere there is a type T defined in BaseClass , treat it as a type int when used through InheritingClass?

That is my understanding and I just want to make sure that is correct before I build the rest of these classes and find out I was way off. This is the first time I've used generics.

4

3 回答 3

5

不,不是的; 这意味着您的类专门仅继承自BaseClass<int>. 如果您在 中定义泛型类型参数TInheritingClass如下所示:

InheritingClass<T> : BaseClass<int>

那么该类型参数仅适用于InheritingClass它自己的成员,并且不适用于BaseClass任何方式。由于出身,T也不会InheritingClass自动解决。int换句话说,这两个类型参数是相互独立的。

于 2012-06-29T21:40:08.870 回答
2

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

正如@BoltClock 已经提到的那样,情况并非如此。但是,我想知道您是否想说:

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

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

于 2012-06-29T21:45:51.570 回答
0

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

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

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

于 2012-06-29T21:45:53.803 回答