| 

.NET C# Java Javascript Exception

2
Weiß jemand, welche Performance Enumerable.Count hat, wenn man es auf Arrays anwendet. Eigentlich würde es ja reichen, die Length-Eigenschaft zu nehmen. Ist Count() schlau genug, das zu tun?
21.08.2009
jor 791 2 7
1 Antwort
6
Ja, Enumerable.Count() ist schlau genug, macht das allerdings ein wenig anders.
Die Implementierung der statischen Methode Count in der Klasse Enumerable geht
beim Zählen der Objekte in einer Auflistung folgendermaßen vor:
Nach der null-Prüfung des aufrufenden Objekts, wird ein Cast in ICollection<T> versucht, wobei T dem Typ der Auflistung entspricht. Hast du also ein Array vom Typ string und willst mittels Enumerable.Count() die Anzahl der Elemente ermittelt, castet Count() in eine ICollection<string>-Instanz und prüft ob der Cast gelungen ist. Wenn ja, wie die Anzahl der Elemente der Auflistung mit der Eigenschaft Count der Klasse ICollection<T> zurückgegeben; also:
return ICollection<string>.Count;
Sollte der Cast nicht gelingen, wird mittels eines IEnumerator<T> iteriert und die Elemente gezählt.
Ich hoffe das Thema verständlich rübergebracht zu haben.

Servus,
Klaus
21.08.2009
klaus_b 1,6k 3 7
klaus_b 1,6k 3 7
Hallo,
bin vor kurzem über einen interessanten Post zu Count() und Performanz gestoßen. Vielleicht ist es in diesem Zusammenhang auch von Interesse...
http://www.kodefuguru.com/post/2009/12/07/Any-versus-Count.aspx
Gruss Jan
Jan Christian Selke 09.12.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH