如何在 C# 6.0 的泛型 类 中包含特定于类型的代码?
How to include type-specific code in generic classes for C# 6.0?
我正在使用 C# 6.0 (VS2015) 编写泛型 class,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是 int
)包含额外的 methods/code,但我不知道如何以一种方式将 int 的 values/results 分配给通用类型属性编译器将接受。
class FOO<T>
{
public T yada;
void BAR(int nom)
{
if(nom is T)
{
yada = (T)nom;
}
}
}
我不知道如何让它接受最后一行:yada = (T)nom;
,它总是说它无法将 nom
转换为 T
。
我觉得一定有一个简单的方法可以做到这一点,我以前可能也做过,但我现在肯定记不起来了。我已经广泛地尝试 google,但我一定是用错了词,因为它一直返回的只是关于如何对 class 本身进行类型约束的文章,这不是我正在尝试的去做。
你可以简单地写:
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
我正在使用 C# 6.0 (VS2015) 编写泛型 class,它具有泛型类型的模块级值(字段、属性等)。但是,我需要为某些数据类型(特别是 int
)包含额外的 methods/code,但我不知道如何以一种方式将 int 的 values/results 分配给通用类型属性编译器将接受。
class FOO<T>
{
public T yada;
void BAR(int nom)
{
if(nom is T)
{
yada = (T)nom;
}
}
}
我不知道如何让它接受最后一行:yada = (T)nom;
,它总是说它无法将 nom
转换为 T
。
我觉得一定有一个简单的方法可以做到这一点,我以前可能也做过,但我现在肯定记不起来了。我已经广泛地尝试 google,但我一定是用错了词,因为它一直返回的只是关于如何对 class 本身进行类型约束的文章,这不是我正在尝试的去做。
你可以简单地写:
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