Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#6.0的泛型类中包含特定于类型的代码?_C#_.net_Visual Studio 2015_Type Conversion_C# 6.0 - Fatal编程技术网

如何在C#6.0的泛型类中包含特定于类型的代码?

如何在C#6.0的泛型类中包含特定于类型的代码?,c#,.net,visual-studio-2015,type-conversion,c#-6.0,C#,.net,Visual Studio 2015,Type Conversion,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;

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

class FOO<T>
{
    public T yada;

    void BAR(int nom)
    {
        if(nom is T)
        {
            yada = (T)nom;
        }
    }
}
class-FOO
{
雅达公共图书馆;
空栏(内部名称)
{
如果(名称为T)
{
雅达=(T)名称;
}
}
}
我不知道如何让它接受最后一行:
yada=(T)nom
,它总是说它不能将
nom
转换为
T

我觉得必须有一个简单的方法来做到这一点,我甚至可能做过,但我现在肯定记不起来了。我曾尝试在谷歌上搜索这一内容,但我一定是用错了词,因为它不断返回的只是关于如何对类本身进行类型约束的文章,这不是我要做的。

你可以简单地写:

class FOO<T>
{
  public T yada;

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

Convert.ChangeType(…)
可能就是我想的,谢谢。然而,我完全困惑于
(T)(object)nom
是否可以工作。我可以看到它是这样的,但它似乎很疯狂。是的,我的第一个快速反应是使用Convert,但在我看到我们在这里将int转换为int之后,所以不需要这样做,只转换到object和T旁边。因为int不能转换为任何形式,但是object可以和type不匹配最终在运行时引发异常,但没有编译错误。
var foo = new FOO<int>();
foo.BAR(10);
Console.WriteLine(foo.yada);
10