【问题标题】:Type deduction in C# generics like in C++ templates?C# 泛型中的类型推导,如 C++ 模板中的类型?
【发布时间】:2016-11-07 17:52:05
【问题描述】:

在 C# 中:是否可以使用泛型参数类的类型作为方法的返回类型或定义成员?

C++ 示例:

class AgrumentClass
{
    typedef int type;
public:
    static type GetSomething() { return 0; }
};

template< class T >
class GenericClass
{
    typedef typename T::type type;
public:
    static type GetSomething() { return T::GetSomething(); }
};

int main()
{
    int value = GenericClass<AgrumentClass>::GetSomething();

    return value;
}

【问题讨论】:

  • 我投票结束这个问题,因为它不是代码转换工具!
  • 是的,你可以学习 c# 泛型,并且几乎可以在任何地方使用它们 msdn.microsoft.com/en-us/library/512aeb7t.aspx
  • @mybirthname 他不是要代码转换工具。他在问 C# 中是否有并行功能,并包含一个 C++ 示例来展示他所指的概念。
  • @BrianWarshaw 好吧,如果我给你写一个汇编代码并问这在 c# 中是否可行,是不是代码转换?

标签: c# c++ templates generics


【解决方案1】:

您的示例本身没有清晰地转换为 C#,因为它假设了泛型类型上可用的方法。 C# 允许您将泛型类型限制为特定类型或接口的后代或实现者,但这是您所能做到的。如果方法在编译时无法解析为类型,则无法编译。

【讨论】:

  • 我认为没有静态方法。如果我没记错的话,在 C# 中,静态方法是不可继承的。
  • static 并不重要——我使用 static 只是为了使 C++ 示例尽可能简短(没有对象实例化)。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多