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

标签 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

            }
         }

最佳答案

我希望不会,因为您假设 IList 中的类型是“int”,所以您完全错过了泛型方法的要点。

如果你这样做了:

T a = (T)list[i]

然后它就可以工作了。

关于c# - 为什么我不能将泛型类型转换为值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205027/

相关文章:

c# - DistinctBy 在 C#/Visual Studio 2012 中不起作用

c# - 没有为 GridView ASP.NET 触发 OnPageIndexChanging 事件

java - java8中的有界类型编译错误

c# - 无法添加对 WinRT C++ DLL 项目的引用

c# - 将无序列表中的数据与 C# 中的 POCO 一起或与 POCO 一起发回 Controller 操作

c# - 创建通用方法来构造和返回通用对象?

c# - 使用 C# 泛型支持特定类型,无需硬编码类型比较

delphi - 在 delphi TDictionary 中查找最大值的最佳方法是什么?

c# - 异步运行同步方法的正确方法是什么

c# - 使用参数启动程序