Na przykład w języku C # tablice mają właściwość Length. Ale inne typy kolekcji, takie jak listy itp., Mają właściwość Count. Czy istnieje powód, dla którego te dwa są różne? Jeśli tak, chciałbym wiedzieć.
c#
programming-languages
history
collections
Arunster
źródło
źródło
Odpowiedzi:
Są one nazywane inaczej, ponieważ są semantycznie różne:
Liczba kolekcji jest liczbą przechowywanych w niej przedmiotów i może z czasem ulec zmianie.
Długość tablicy to maksymalna liczba przedmiotów, które może pomieścić (będzie miała długość 10, nawet jeśli nie zgromadziłeś w niej tylu przedmiotów) i jest niezmienna.
Przykład:
Jeśli mam wiadro, w którym zmieści się maksymalnie 100 piłek, ma ono długość 100. Jeśli włożę do niego 50 piłek, wówczas będzie miało liczbę 50.
Jeśli dodam jeszcze 10 kulek, liczba będzie wynosić 60, ale długość będzie nadal wynosić 100. Aby zmienić długość, muszę zdobyć inne wiadro.
Tablica prawdopodobnie używa słowa Długość, ponieważ pod maską przydziela ciągły blok (długość) pamięci na podstawie pojemności pomnożonej przez rozmiar elementu. Chociaż fakt, że klasa List używa „Pojemność” do podobnej (choć zmiennej) koncepcji, sugeruje, że tablica może używać słowa „Długość” ze względów historycznych.
źródło
T[]
o długości N zawsze przechowuje dokładnie N wartości typuT
. Semantycznie nie wszystkie z tych wartości mogą mieć znaczenie (mogą byćnull
na przykład), ale istnieją. Różni się to od zwykłego znaczenia pojemności (używanegoList<T>
na przykład przez). Masz rację, żeCount
możesz się zmienić, aLength
nie możesz. Z drugiej strony nic nie nakazuje,Count
aby faktycznie się zmieniło. Jest również używany do niezmiennych kolekcji.count
właściwość -property.