c# - 是否可以在 C# 中调用泛型参数的方法?

标签 c#

在 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/

相关文章:

c# - 未检测到 Visual Studio 2017 中的新类项

c# - 用 unicode 字符填写 pdf 表单

c# - UWP 无需打印预览即可打印

c# - 动态创建的路由仅在应用程序重新初始化时才有效

c# - 当前和推荐的触发异步线程的方法是什么?

c# - 使用 C# 客户端从 WebSphere MQ 断开连接时,TCP 连接仍处于 CLOSE_WAIT 状态

c# - 如何调用rad网格的命令

c# - 在调用 Shutdown 然后在 Socket 上关闭时获取 ObjectDisposed 异常

javascript - 有什么方法可以在我的 c# 程序中捕获从 cefsharp 中的 javascript 抛出的错误吗?

c# - 谷歌搜索结果html代码c#