我想泛型类型参数T值的值转换成整数,并确保T是在事实上整数后:如何将Generic Type Argument的值转换为具体类型?
public class Test
{
void DoSomething<T>(T value)
{
var type = typeof(T);
if (type == typeof(int))
{
int x = (int)value; // Error 167 Cannot convert type 'T' to 'int'
int y = (int)(object)value; // works though boxing and unboxing
}
}
}
虽然它的工作原理通过装箱和拆箱,这是一个额外的性能开销,如果有办法直接做,我就会徘徊。
所以,让我明白这一点...你正在构造一个通用的方法,但它需要知道,如果类型参数是一个int?你的设计有问题。 – Will 2010-05-19 17:02:50
任何不加重载的原因'void DoSomething(int value){}'? – 2010-05-19 17:07:51
这是一个简化的例子。实际的代码有很多东西在转换之前和之后从泛型中受益 – 2010-05-19 17:26:59