在 C++ 中,您可以像这样从模板参数调用方法:
template<class T> class foo
{
T t;
t.foo();
}
但在 C# 中,这似乎是不可能的:
class foo<T>
{
T t;
public void foo() {
t.foo(); // Generates a compiler error
}
};
我想这在 C# 中可能是不可能的,是吗?
最佳答案
您已经发现了模板 和泛型 之间的区别。尽管它们看起来相似,但实际上却大不相同。
模板只需要实际提供的类型参数是正确的;如果你提供了一个没有方法 foo 的 T,那么编译就会失败;如果您仅提供具有 foo 的类型参数,则编译成功。
相比之下,泛型必须对任何可能的 T 都是正确的。因为我们没有证据表明每个可能的 T 都有一个方法 foo,所以泛型是非法的。
关于c# - 是否可以在 C# 中调用泛型参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609463/