首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

泛型转换的有关问题,求解释

2012-09-14 
泛型转换的问题,求解释static void convertT(ref T t1) where T : struct{if (t1 is Enum){T t2 (T)En

泛型转换的问题,求解释
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,这样写都成立,其效率也最高。

热点排行