Como posso determinar o tamanho de uma matriz (comprimento / número de itens) em C #?
Como posso determinar o tamanho de uma matriz (comprimento / número de itens) em C #?
Respostas:
Se for uma matriz unidimensional a
,
a.Length
fornecerá o número de elementos de a
.
Se b
for uma matriz retangular multidimensional (por exemplo, int[,] b = new int[3, 5];
)
b.Rank
dará o número de dimensões (2) e
b.GetLength(dimensionIndex)
obterá o comprimento de qualquer dimensão (indexação baseada em 0 para as dimensões - então b.GetLength(0)
é 3 e b.GetLength(1)
é 5).
Consulte a documentação System.Array para obter mais informações.
Como @Lucero aponta nos comentários, há um conceito de "matriz denteada", que nada mais é do que uma matriz unidimensional de matrizes (normalmente unidimensionais).
Por exemplo, um poderia ter o seguinte:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Observe que os 3 membros de c
todos têm comprimentos diferentes. Neste caso, como anteriormente c.Length
irá indicar o número de elementos de c
, (3) e c[0].Length
, c[1].Length
, e c[2].Length
será de 3, 2, e 7, respectivamente.
int[][]
) ;-)
[,]
e [][]
não parece estar clara para todos os novatos em .NET, então ainda pode valer a pena observar que [][]
não é uma matriz multidimensional no sentido de suas respostas.
b.GetLength[0] is 3 and b.GetLength[1] is 5
deve ser b.GetLength(0) and b.GetLength(1)
.
Você pode consultar a documentação do Array para descobrir a resposta a esta pergunta.
Neste caso específico, você provavelmente precisa de Comprimento :
int sizeOfArray = array.Length;
Mas como esta é uma pergunta tão básica e sem dúvida você tem muitas outras como esta, em vez de apenas dizer a resposta, prefiro dizer a você como encontrar a resposta sozinho.
Visual Studio Intellisense
Quando você digita o nome de uma variável e pressiona a .
tecla, ela mostra uma lista de todos os métodos, propriedades, eventos, etc. disponíveis naquele objeto. Quando você destaca um membro, ele fornece uma breve descrição do que ele faz.
Pressione F1
Se encontrar um método ou propriedade que pode fazer o que você deseja, mas não tiver certeza, você pode mover o cursor sobre ele e pressionar F1 para obter ajuda. Aqui você obtém uma descrição muito mais detalhada e links para informações relacionadas.
Procurar
Os termos de pesquisa size of array in C#
fornecem muitos links que fornecem a resposta à sua pergunta e muito mais. Uma das habilidades mais importantes que um programador deve aprender é como encontrar informações. Geralmente é mais rápido encontrar a resposta sozinho, especialmente se a mesma pergunta já foi feita antes.
Use um tutorial
Se você está apenas começando a aprender C #, achará mais fácil seguir um tutorial. Posso recomendar os tutoriais C # no MSDN. Se você quiser um livro, recomendo Essential C # .
Stack Overflow
Se você não conseguir encontrar a resposta sozinho, fique à vontade para postar a pergunta no Stack Overflow. Mas agradecemos se você mostrar que se esforçou para encontrar a resposta sozinho.
para matriz unidimensional
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
para matriz multidimensional
int length = listItems.Rank;
Para obter o tamanho de 1 dimensão
int length = listItems.GetLength(0);
Rank
propriedade não retorna o número de itens, ela retorna o número de dimensões.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Para uma matriz de dimensão única, você usa a Length
propriedade:
int size = theArray.Length;
Para matrizes de múltiplas dimensões, a Length
propriedade retorna o número total de itens na matriz. Você pode usar o GetLength
método para obter o tamanho de uma das dimensões:
int size0 = theArray.GetLength(0);
é assim: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
então, conforme você usa esta matriz:
name[i]=new type[size_of_sec.Dim]
ou você pode declarar algo como uma matriz
type[ , ] name=new type [size1,size2]
O que foi perdido até agora foi o que de repente me deixou irritado:
Como posso saber a quantidade de itens dentro da matriz? É .Length
igual a .Count
uma lista?
A resposta é: a quantidade de itens do tipo X que foram colocados em um array do tipo X criado com new X[number]
você deve carregar você mesmo !
Por exemplo. usando um contador: int countItemsInArray = 0
e countItemsInArray++
para cada atribuição ao seu array.
(O array recém-criado com new X[number]
tem todo o espaço para number
itens (referências) do tipo X já alocado, você pode atribuir a qualquer lugar dentro como sua primeira atribuição, por exemplo (if number
= 100 e o nome da variável = a
) a[50] = new X();
.
Não sei se C # especifica o valor inicial de cada lugar dentro de um array na criação, se não especifica ou o valor inicial com o qual você não pode comparar (porque pode ser um valor que você mesmo colocou no array), você teria que rastrear quais lugares dentro da matriz você já atribuiu, se você não atribuir sequencialmente a partir de 0
(neste caso, todos os lugares menores do que countItemsInArray
seriam atribuídos).
Em sua pergunta, o tamanho de uma matriz (comprimento / número de itens) dependendo se / deve representar "alternativa" ou "dividir por", o último ainda precisa ser coberto (o "número de itens" que acabei de dar " quantidade de itens "e outros dados .Length
que correspondem ao valor de number
no meu código acima):
C # tem um sizeof
operador ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). É seguro usar para tipos internos (como int) (e opera apenas em tipos (não variáveis)). Portanto, o tamanho de um array b
do tipo int
em bytes seria b.Length * sizeof(int)
.
(Como todo o espaço de uma matriz já está sendo alocado na criação, como mencionado acima, e sizeof
trabalhando apenas em tipos, nenhum código como sizeof(variable)/sizeof(type)
funcionaria ou geraria a quantidade de itens sem rastreamento.)