.net-4.0 - 为什么我不能在 .NET 4.0 中将 List<int> 分配给 IEnumerable<object>

标签 .net-4.0 ienumerable covariance value-type

我尝试这样做:

IEnumerable<object> ids = new List<string>() { "0001", "0002", "0003" };

效果很好!

但是当我尝试这样做时:
IEnumerable<object> intIds = new List<System.Int32>() { 1, 2, 3 };

Visual Studio 告诉我:
无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(您是否缺少类型转换?)

为什么?

最佳答案

int是值类型,只能装箱到object - 它不是从 object 继承的.由于您使用的是 IEnumerable<object>无论如何,这应该有效:

IEnumerable intIds = new List<int>() { 1, 2, 3 };

关于.net-4.0 - 为什么我不能在 .NET 4.0 中将 List<int> 分配给 IEnumerable<object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175311/

相关文章:

嵌套方法中的 C# yield

c# - 用一行代码填充 Enumerable.ToList

c# - 为什么 Action<Action<T>> 是协变的?

.net-4.0 - 你能在 4.0 的 Properties.Settings 中存储一个通用字典吗?

c# - 为什么客户端 DataContracts 的 .Net 4.0 构建会导致 .Net 4.5 应用程序中的 MethodAccessException?

c# - C#如何进行动态绑定(bind)?

c# - 向每个 Tuple 对象添加描述?

c# - 在属性上实现 IEnumerable

computer-vision - 如何使用PCL库从点云数据中获取协方差矩阵?

r - 如何重新定义cov来计算总体协方差矩阵