如何在C#6.0的泛型类中包含特定于类型的代码?
我正在用C#6.0(VS2015)编写一个泛型类,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是如何在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;
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