Introdução. 
Muitas vezes, ao trabalhar com qualquer informação, você tem que lidar com dados tabulares. Os programas modernos geralmente trabalham com esses dados. O exemplo mais simples é programar jogos em um tabuleiro de xadrez: jogo da velha, xadrez, damas, etc. 
 
Em matemática, essas estruturas são chamadas de matrizes.
 
Matriz  é uma tabela retangular composta por elementos do mesmo tipo (números, strings, etc.).< /span> 
Esses dados em C# podem ser armazenados e processados como arrays bidimensionais - "arrays de arrays"  
Para processar os dados da tabela, é necessário lembrar o estado de cada célula (célula). Cada célula tem dois números: um número de linha e um número de coluna. 
Na matriz, cada elemento possui dois índices: primeiro é indicado o número da linha, depois o número da coluna. A numeração de linhas e colunas começa do zero. 
Por exemplo, o elemento A[1, 2] é o elemento localizado na segunda linha e na terceira coluna.
Assim como com arrays regulares, para trabalhar com matrizes, você precisa aprender a criá-las, inserir, processar e exibir.
Crie uma matriz. extensão >
É possível criar uma matriz em memória de um determinado tamanho preenchido com alguns valores iniciais. 
 
int[,] array = new int[4, 2]; // 4 linhas, 2 colunas
 
Depois de criar uma matriz, você pode preenchê-la com valores arbitrários. Como cada elemento possui dois índices, é necessário usar loops aninhados
for (int i=1; i <= N, i++) { / / N - número de linhas
    for (int j=1; j <= N, j++) { // M é o número de colunas
        A[i, j] = ...
  }
}
Exibindo a matriz. 
 
Dois loops aninhados geralmente são usados para processar e exibir a lista. O primeiro loop está no número da linha, o segundo loop está nos elementos dentro da linha.  Para sair a matriz na tela linha por linha, separando os números com espaços dentro de uma linha, você precisa escrever o seguinte fragmento: 
 
for (int i=1; i <= N, i++) {
    for (int j=1; j <= N, j++) {
        Console. Write(A[i, j] + " ");
  }
  Console.WriteLine(); // move para uma nova linha
}
   
Você pode fazer o mesmo, mas use list loops em vez de index ( foreach). Tente escrever uma sub-rotina que implemente você mesmo.  
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            Preenchendo uma matriz com valores do teclado. 
Deixe o programa receber uma matriz bidimensional como entrada, na forma < em>n em> strings, cada uma contendo m números separados por espaços. Como contá-los? Por exemplo, assim: 
int[,] array = new int[n,m]; //cria um array para preencher
for (int i = 0; i <  n; i++)
{
       string A = Console.ReadLine(); // Leia a linha
       int[] curr = A.Split(' ').Select(int.Parse).ToArray(); // converte esta string em um array unidimensional curr
       for (int j = 0; j < m; j++)
       {
           matriz[i, j] = atual[j]; // preencha a string do array que precisamos com os valores do array atual
       }
}
   
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            Cada elemento da matriz tem dois índices, então você precisa usar um loop aninhado para iterar todos os elementos. 
Normalmente, uma matriz é iterada linha por linha: o loop externo itera sobre os índices de linha, enquanto o loop interno itera sobre os índices de coluna. 
Mas se necessário, você pode iterar sobre a matriz e por colunas, então os ciclos são invertidos. 
            
            
                  
            
             
                    
            
                 
      
                  
           |