首页 > 解决方案 > 如何在 C# 6.0 的泛型类中包含特定于类型的代码?

问题描述

我正在用 C# 6.0 (VS2015) 编写一个泛型类,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是int)包含额外的方法/代码,但我无法弄清楚如何以编译器接受的方式将 int 的值/结果分配给泛型类型属性。

class FOO<T>
{
    public T yada;

    void BAR(int nom)
    {
        if(nom is T)
        {
            yada = (T)nom;
        }
    }
}

我不知道如何让它接受最后一行:yada = (T)nom;,它总是说它不能转换nomT.

我觉得必须有一个简单的方法来做到这一点,我什至可能以前做过,但我现在肯定不记得了。我试图广泛地用谷歌搜索这个,但我必须使用错误的词,因为它一直返回的只是关于如何对类本身进行类型约束的文章,这不是我想要做的。

标签: c#.netvisual-studio-2015type-conversionc#-6.0

解决方案


你可以简单地写:

class FOO<T>
{
  public T yada;

  public void BAR(int nom)
  {
    if ( nom is T )
    {
      yada = (T)(object)nom;
    }
  }
}

例子

var foo = new FOO<int>();
foo.BAR(10);
Console.WriteLine(foo.yada);

输出

10

推荐阅读