C# 中为何不能将 List<string>
对象赋值给 List<object>
变量?
在 C# 中,尝试将 List<string>
对象赋值给 List<object>
变量会导致编译时错误。即使进行显式转换,此操作也不允许。让我们深入探讨其背后的原理:
考虑以下场景:
List<string> sl = new List<string>(); List<object> ol; ol = sl; // 产生编译时错误
如果此转换能够成功执行,那么如果您向 ol
列表添加一个类型为 Foo
的对象会发生什么?这会在 sl
列表中创建一个不一致性,因为 sl
列表预期只包含字符串。当遍历 sl
列表时,遇到 Foo
实例会导致类转换异常,表明它无法转换为字符串。
相反,从 List<object>
到 List<string>
的转换可能有用。通过从更通用的类(object
)转换到更具体的类(string
),它确保向字符串列表添加任何元素都不会违反对象列表的约束。但是,C# 可能并不支持这种类型的转换。
以上是为什么不能将`列表'分配给C#中的``列表''变量?的详细内容。更多信息请关注PHP中文网其他相关文章!