为什么我不能将泛型类型转换为值类型

Oys*_*sio 3 c# generics

这可能是一个基本问题,但为什么在将值类型列表传递给泛型方法时,我不能将泛型类型转换回原始类型?

IList<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
Inverse<int>(list);

  public void Inverse<T>(IList<T> list)
        {
            for (i = 0; i <= list.Count / 2; i++)
            {
                int a = list[i] as Int16; //=> does not work
                int b = (int)list[i]; //=> does not work either

            }
         }
Run Code Online (Sandbox Code Playgroud)

小智 6

我希望它不会,因为你假设IList中的类型是'int',你完全错过了那里的泛型方法.

如果你这样做:

T a = (T)list[i]

那会有用.