Alles erbt von object. Das ist die Grundlage der Vererbung. Alles kann implizit in den Vererbungsbaum aufgenommen werden, d.h..
object me = new Person();
Folgt man der logischen Schlussfolgerung, so ist eine Gruppe von Menschen auch eine Gruppe von Objekten:
List<Person> people = new List<Person>();
people.Add(me);
people.Add(you);
List<object> things = people; // Ooops.
Nur funktioniert das nicht. Die Leute, die .NET entwickelt haben, haben das entweder übersehen, oder es gibt einen Grund dafür, und ich bin mir nicht sicher, welchen. Zumindest einmal bin ich in eine Situation geraten, in der dies nützlich gewesen wäre, aber ich musste am Ende einen fiesen Hack verwenden (Unterklassifizierung von List, nur um einen Cast-Operator zu implementieren).
Die Frage ist nun: Gibt es einen Grund für dieses Verhalten? Gibt es eine einfachere Lösung, um das gewünschte Verhalten zu erreichen?
Für das Protokoll, ich glaube, die Situation, dass ich diese Art von Verhalten wollte, war eine allgemeine Druckfunktion, die Listen von Objekten durch den Aufruf ToString() und die Formatierung der Zeichenfolgen schön angezeigt.