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?
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.
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
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