English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

vetores multidimensionais do C#

O C# suporta até32dimensões de vetores multidimensionais. As multidimensionais podem ser declaradas adicionando vírgulas dentro dos colchetes. Por exemplo, [ , ] declara um vetor bidimensional, [ , , ] declara um vetor tridimensional, [ , , ,] declara um vetor quadridimensional, etc. Portanto, no vetor multidimensional, o número de vírgulas = o número de dimensões-1.

Declarar vetores multidimensionais

int[, ,] arr2d; // vetor bidimensional
int[, ,] arr3d; // vetor tridimensional
int[, ,] arr4d; // vetor quadridimensional
int[, , , ,] arr5d; // vetor quintidimensional

vetor bidimensional

Vamos entender o vetor bidimensional. Abaixo está a inicialização do vetor bidimensional.

int[, ,] arr2d = new int[3,2]{ 
                                {1, 2}, 
                                {3, 4}, 
                                {5, 6} 
                            };
//ou 
int[, ,] arr2d = { 
                    {1, 2}, 
                    {3, 4}, 
                    {5, 6} 
                };

No exemplo de vetor bidimensional acima, [3,2]define o número de linhas e colunas. A primeira coluna representa o número de linhas, e a segunda coluna define o número de colunas. A imagem a seguir demonstra o vetor bidimensional dividido em linhas e colunas.

vetor bidimensional

Os seguintes valores de acesso do vetor bidimensional.

int[, ,] arr2d = new int[3,2]{ 
                                {1, 2}, 
                                {3, 4}, 
                                {5, 6} 
                            };
arr2d[0, 0]; //Retorna1
arr2d[0, 1]; //Retorna2
arr2d[1, 0]; //Retorna3
arr2d[1, 1]; //Retorna4
arr2d[2, 0]; //Retorna5
arr2d[2, 1]; //Retorna6
//arr2d[3, 0]; //lança um erro de tempo de execução, porque não há quarta linha

No exemplo acima, o valor do vetor bidimensional pode ser acessado através dos índices de linha e coluna [índice de linha, índice de coluna]. Portanto, [0, 0] retorna a primeira linha e primeira coluna[1, 1]o valor, e retorna o valor da segunda linha e segunda coluna.

vetor tridimensional

Agora, vamos entender o vetor tridimensional. Abaixo está a declaração e inicialização do vetor tridimensional.

int[, ,] arr3d1 = new int[1, 2, 2]{
                { { 1, 2} 3, 4}
            };
int[, ,] arr3d2 = new int[2, 2, 2]{
                { {1, 2}3, 4} },
                { {5, 6}7, 8}
            };
int[, ,] arr3d3 = new int[2, 2, 3]{
                { { 1, 2, 3}4, 5, 6} },
                { { 7, 8, 9}10, 11, 12}
            };
arr3d2[0, 0, 0]; // Retorna1 
arr3d2[0, 0, 1]; // Retorna2 
arr3d2[0, 1, 0]; // Retorna3 
arr3d2[0, 1, 1]; // Retorna4 
arr3d2[1, 0, 0]; // Retorna5 
arr3d2[1, 0, 1]; // Retorna6 
arr3d2[1, 1, 0]; // Retorna7 
arr3d2[1, 1, 1]; // Retorna8

como você pode ver no exemplo acima, arr3d1do[1,2,2]especificar que ele conterá o vetor bidimensional [2,2uma linha dentro do [arr3d2especificar o número de dimensões[2,2,2representa o contido do vetor bidimensional [2,2duas linhas. Portanto, a primeira coluna representa o número de linhas do vetor bidimensional interno.

vetor quadridimensional

Agora, veja a matriz quadridual abaixo.

int[,,,] arr4d1 = new int[1, 1, 2, 2]{
                { 
                    { { 1, 2} 3, 4}     
                }
            };
arr4d1[0, 0, 0, 0]; // Retorna1
arr4d1[0, 0, 0, 1]; // Retorna2
arr4d1[0, 0, 1, 0]; // Retorna3
arr4d1[0, 0, 1, 1]; // Retorna4
int[,,,] arr4d2 = new int[1, 2, 2, 2]{
		{
			{ {1, 2}3, 4} },
			{ {5, 6}7, 8}
		}
	};
arr4d2[0, 0, 0, 0]; // Retorna1
arr4d2[0, 0, 0, 1]; // Retorna2
arr4d2[0, 0, 1, 0]; // Retorna3
arr4d2[0, 0, 1, 1]; // Retorna4
arr4d2[0, 1, 0, 0]; // Retorna5
arr4d2[0, 1, 0, 1]; // Retorna6
arr4d2[0, 1, 1, 0]; // Retorna7
arr4d2[0, 1, 1, 1]; // Retorna8

No exemplo acima, o array quadridual arr4d1Especificar[1、1、2、2], o que significa que ele contém uma linha da matriz tridimensional.

Da mesma forma, você pode declarar e inicializar5dimensão,6Matriz vetorial e no máximo32Matriz vetorial.