[Die nicht-genericized] IEnumerator
kehrt das Element aus der Sammlung als Typ-Objekt zurück, so dass für alle Arten bietet.
Das ist genau das Problem. Sie wissen jetzt nichts über die Objekte, die in der Sequenz sind. Sie könnten sein alles und so müssen Sie in der Lage sein, mit alles aus dieser Sequenz kommen. Wenn Sie eine Sequenz von Giraffen oder eine Sequenz von Kunden oder eine Folge von ganzen Zahlen haben, wissen Sie, dass jedes Element in der Sequenz eine Giraffe, ein Kunde, eine ganze Zahl oder was auch immer ist. Wenn Sie eine Sequenz von Objekten haben, müssen Sie Code schreiben, der überprüft, um was für ein Objekt es sich jeweils handelt.
Mit Typinformationen kann der Compiler diese Informationen durch das System fädeln. Angenommen, wir haben eine IEnumerable<Customer>
. Alles in der Sequenz ist also ein Kunde. Wenn wir dann sagen:
var first = customers.First();
var address = first.Address;
Nun kann der Compiler ableiten, dass first
ein Customer
ist, und weiß, dass die Kunden-Adressen haben, so dass die zweite Zeile ist legal. Wenn customers
nur IEnumerable
waren, dann kann der Compiler nicht beweisen, dass Ihr Programm typsicher ist!
Auch einige Typen weisen eine Leistungseinbuße auf, die als "Boxstrafe" bezeichnet wird, wenn sie als object
behandelt wird. Mit einer generisch typisierten Sammlung wird diese Strafe beseitigt.
Willkommen bei SO. ** Bitte stellen Sie nicht zwei Fragen in einer Frage **. Wenn Sie zwei Fragen haben, dann schreiben Sie zwei Fragen. –
Ja, du hast Recht, ich werde die zweite Frage von diesem entfernen. Prost – nish91
Mit 'IEnumerator' erhalten Sie Typ Sicherheit. dh. Sie müssen den Typ des Objekts nicht überprüfen, bevor Sie es verwenden, da Sie wissen, dass es vom Typ T ist. –