看来 List 对象不能存储在 C# 中的 List 变量中,甚至不能以这种方式显式转换。
List<string> sl = new List<string>();
List<object> ol;
ol = sl;
结果无法隐式转换类型System.Collections.Generic.List<string>
to System.Collections.Generic.List<object>
进而...
List<string> sl = new List<string>();
List<object> ol;
ol = (List<object>)sl;
结果无法转换类型System.Collections.Generic.List<string>
to System.Collections.Generic.List<object>
当然,您可以通过将所有内容从字符串列表中取出并一次将其放回其中来完成此操作,但这是一个相当复杂的解决方案。
可以这样想,如果您要执行这样的转换,然后将 Foo 类型的对象添加到列表中,则字符串列表将不再一致。如果您要迭代第一个引用,您将得到一个类转换异常,因为一旦您命中 Foo 实例,Foo 就无法转换为字符串!
作为旁注,我认为是否可以进行反向转换会更重要:
List<object> ol = new List<object>();
List<string> sl;
sl = (List<string>)ol;
我已经有一段时间没有使用 C# 了,所以我不知道这是否合法,但这种类型转换实际上(可能)有用。在这种情况下,您将从一个更通用的类(对象)转到一个从通用类扩展的更具体的类(字符串)。这样,如果添加到字符串列表中,就不会违反对象列表。
有人知道或者可以测试这样的强制转换在 C# 中是否合法吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)