In C # haben Arrays beispielsweise die Eigenschaft Length. Andere Sammlungstypen wie Listen usw. haben jedoch die Eigenschaft Count. Gibt es einen Grund, warum diese beiden unterschiedlich sind? Wenn ja, würde ich gerne wissen.
c#
programming-languages
history
collections
Arunster
quelle
quelle
Antworten:
Sie werden unterschiedlich benannt, weil sie semantisch sehr unterschiedlich sind:
Die Anzahl der Elemente einer Sammlung ist die Anzahl der aktuell darin gespeicherten Elemente und kann sich möglicherweise im Laufe der Zeit ändern.
Die Länge eines Arrays ist die maximale Anzahl von Elementen, die es aufnehmen kann (es hat eine Länge von 10, auch wenn Sie nicht so viele Elemente darin gespeichert haben) und ist unveränderlich.
Beispiel:
Wenn ich einen Eimer habe, in den maximal 100 Bälle passen, hat er eine Länge von 100. Wenn ich 50 Bälle hineinlege, hat er eine Anzahl von 50.
Wenn ich 10 weitere Bälle hinzufüge, wird der Count auf 60 gesetzt, aber die Länge beträgt immer noch 100. Um die Länge zu ändern, muss ich einen anderen Eimer bekommen.
Array verwendet wahrscheinlich das Wort Length, weil es unter der Haube einen zusammenhängenden Speicherblock (eine Länge) auf der Grundlage der Kapazität multipliziert mit der Elementgröße zuweist. Obwohl die List-Klasse "Capacity" für ein ähnliches (wenn auch veränderliches) Konzept verwendet, lässt dies darauf schließen, dass Array aus historischen Gründen möglicherweise das Wort "Length" verwendet.
quelle
T[]
mit einer Länge von N speichert immer genau N Werte vom TypT
. Semantisch mögen nicht alle diese Werte von Bedeutung sein (sie könntennull
zum Beispiel sein), aber sie existieren. Dies unterscheidet sich von der üblichen Bedeutung von Kapazität (wie sie beispielsweise von verwendet wirdList<T>
). Du hast recht, dasCount
kann sich ändern,Length
aber nicht. Andererseits gibt es nichts, wasCount
sich tatsächlich ändern würde. Es wird auch für unveränderliche Sammlungen verwendet.count
-Eigenschaft haben.