C # зубчатый массив не инициализируется - PullRequest
0 голосов
/ 03 октября 2018

Попытка создать двумерный зубчатый массив, который имеет 10 столбцов и 10 строк.Когда я пытаюсь инициализировать первый столбец, появляется несколько ошибок, и я не уверен, что делаю неправильно.

class Program
{
    int[][] board = new int[10][];
    board[0] = new int[5];
    ...
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Если вы хотите, чтобы в вашем массиве было 10 строк и 10 столбцов, лучше не использовать зубчатый массив.Используйте:

int[,] board = new int[10, 10];

вместо

0 голосов
/ 03 октября 2018

Вы должны поместить любой код, который не является объявлением, в методы

class Program
{
    static int[][] board = new int[10][];

    static void Main()
    {
        board[0] = new int[10];
        ...
    }
}

Здесь board - это поле класса.Вы также можете сделать это локальной переменной внутри метода:

class Program
{
    static void Main()
    {
        int[][] board = new int[10][];
        board[0] = new int[10];
        ...
    }
}

Разница между полем класса и локальной переменной заключается в том, что к полю можно получить доступ извне, если оно является открытыми "навсегда" живет для статических полей, и пока объекты, созданные из этого класса, живут для полей экземпляра, тогда как локальная переменная может быть доступна только внутри метода и обычно живет только до тех пор, пока длится вызов метода (не говоря об особых случаяхкак методы итератора и т. д.).

Зубчатый массив полезен в двух случаях

  1. У вас есть структура, которая не является прямоугольной.
  2. Вы хотите бытьвозможность назначать ему целые строки без использования цикла.

В противном случае я бы использовал двумерный массив, который можно инициализировать сразу

int[,] board = new int[10, 10];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...