泛型转换的问题,求解释
static void convert<T>(ref T t1) where T : struct
{
if (t1 is Enum)
{
T t2 = (T)Enum.Parse(typeof(T), "1");
T t3 = (T)Convert.ChangeType(1,Enum.GetUnderlyingType(typeof(T)));
T t4 = (T)(object)1;
}
}
在泛型示例中,这三句转换代码结果是一致的.
我得出的结论是:
这三句代码都是拆箱的过程(将 int 类型转换 object 然后转目标类型)
本人非常不理解 t2,t3 的转换方式.有点多此一举. 求解释.
------解决方案--------------------
另外只有t4存在装箱拆箱的过程,另外2个则没有明显的动作(即使偷偷做了也看不出)。
t4是先将整数1装箱到O类型,然后按照T类型拆箱到值类型。
enum是值类型的,所有值类型都是可以这样拆箱的,因此对于任何的struct,这样写都成立,其效率也最高。