我想泛型類型參數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