我知道在 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++ 相同吗?如果没有,那怎么办?
- 它们是特殊类型吗?
- 它们是在运行时还是在编译时解决的?
- 激活寄存器中为泛型类型保留了多少空间?