Em C #, por exemplo, matrizes têm a propriedade Length. Mas outros tipos de coleção, como listas, etc. têm a propriedade Count. Existe uma razão pela qual esses dois são diferentes? Se sim, gostaria de saber.
c#
programming-languages
history
collections
Arunster
fonte
fonte
Respostas:
Eles são nomeados de maneira diferente porque semanticamente são bem diferentes:
Contagem de uma coleção é o número de itens atualmente armazenados nela e pode potencialmente mudar com o tempo.
O comprimento de uma matriz é o número máximo de itens que pode conter (ele terá um comprimento de 10, mesmo que você não tenha armazenado muitos itens nela) e é imutável.
Exemplo:
Se eu tiver um balde que possa acomodar no máximo 100 bolas, ele terá um comprimento de 100. Se eu colocar 50 bolas nele, ele terá um Contagem de 50.
Se eu adicionar mais 10 bolas, o Count passa a 60, mas o Length ainda é 100. Para alterar o Length, preciso obter um balde diferente.
A matriz provavelmente usa a palavra Comprimento porque, sob o capô, está alocando um bloco contíguo (um comprimento) de memória com base na capacidade multiplicada pelo tamanho do item. Embora o fato de a classe List usar "Capacidade" para um conceito semelhante (embora mutável) sugerir matriz, pode usar a palavra "Comprimento" por razões históricas.
fonte
T[]
com um comprimento de N sempre armazena exatamente N valores do tipoT
. Semanticamente, nem todos esses valores podem ser significativos (podem ser,null
por exemplo), mas eles existem. Isso é diferente do significado usual de capacidade (conforme usado porList<T>
exemplo). Você está certo queCount
pode mudar enquantoLength
não pode. Por outro lado, nada exige queCount
, de fato, mude. Também é usado para coleções imutáveis.count
propriedade-.