一切都继承自对象。这是继承的基础。一切都可以隐式地构建继承树,即。
object me = new Person();
因此,遵循这一逻辑结论,一群人也将是一组对象:
List<Person> people = new List<Person>();
people.Add(me);
people.Add(you);
List<object> things = people; // Ooops.
不过,这是行不通的,设计 .NET 的人要么忽略了这一点,要么有一个原因,但我不确定是哪个原因。至少有一次我遇到了这种情况,这本来是有用的,但我最终不得不使用令人讨厌的黑客(子类化 List 只是为了实现强制转换运算符)。
问题是:这种行为有原因吗?是否有更简单的解决方案来获得所需的行为?
作为记录,我相信我想要这种行为的情况是一个通用打印函数,它通过调用 ToString() 并很好地格式化字符串来显示对象列表。
好吧,每个在 .net 中使用过泛型的人都一定曾经遇到过这种情况。
是的,直觉上它应该有效。不,在当前版本的 C# 编译器中并非如此。
埃里克·利珀特(Eric Lippert)对这个问题有一个非常好的解释(它分为十一个部分或其他内容,有些地方会让你费解,但非常值得一读)。看here.
edit:
挖出了另一个相关链接,这个链接讨论了java如何处理这个问题。看here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)