带有常量的 C# 泛型

新手上路,请多包涵

有没有类似于这个 C++ 模板的东西?

 template <int A>
class B
{
    int f()
    {
        return A;
    }
}

我想让 B<1>、B<2> 等(例如元组)的每个实例都成为不同的类型。

原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 884
2 个回答

简短的回答是 否定 的。

它不适合与 C++ 模板相对的 C# 泛型的工作方式。

.net 泛型不是语言功能,它们是运行时功能。运行时知道如何从特殊的泛型字节码中实例化泛型,这与 C++ 模板可以描述的内容相比受到了相当大的限制。

将此与 C++ 模板进行比较,后者基本上使用替换类型实例化类的整个 AST。可以将基于 AST 的实例化添加到运行时,但它肯定会比当前的泛型复杂得多。

如果没有像值类型数组这样的特性(只存在于不安全的代码中),递归模板实例化或使用这些参数的模板特化也不会很有用。

原文由 CodesInChaos 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题