【发布时间】:2013-03-11 21:21:36
【问题描述】:
我知道在 C++ 中,泛型实际上并不存在,但您可以使用 template 来模拟它。当您构建代码时,编译器会预处理代码并生成一个新代码,其中将泛型值替换为对象声明中指定的实际值,然后才是真正编译的新代码。例如,假设我们有 A 类,如下所示:
template<class T>
class A
{
T f();
};
然后在代码的其他地方我们有A<int> a;。实际编译的代码是:
class A
{
//Replaces T by int in the pre-processing
int f();
};
在整个介绍之后,让我们进入正题。
我的问题是:
- C# 对泛型的处理方式与 C++ 相同吗?如果没有,那怎么办?
- 它们是特殊类型吗?
- 它们是在运行时还是在编译时解决的?
- 在激活寄存器中为泛型类型保留了多少空间?
【问题讨论】:
-
我不熟悉术语“激活寄存器”。我认为这是某种官方术语,因为您将其大写。在这种情况下,它究竟意味着什么?
-
@CodyGray:我所知道的激活寄存器是堆栈中为特定范围的变量保留内存的位置。