一切都继承自对象。这是继承的基础。一切都可以隐式地投射到继承树上,即。
object me = new Person();
因此,按照其逻辑结论,一组人也将是一组对象:
List<Person> people = new List<Person>();
people.Add(me);
people.Add(you);
List<object> things = people; // Ooops.
除了那行不通,设计 .NET 的人要么忽略了这一点,要么是有原因的,我不确定是哪一个。至少有一次我遇到了这很有用的情况,但我最终不得不使用一个讨厌的 hack(子类化 List 只是为了实现一个强制转换运算符)。
问题是:这种行为有原因吗?是否有更简单的解决方案来获得所需的行为?
作为记录,我相信我想要这种行为的情况是一个通用的打印函数,它通过调用 ToString() 并很好地格式化字符串来显示对象列表。