как инициализировать значение ArrayObject для ZERO в С#

-7

у меня есть

Cell[,] cells = new Cells[6,6];
I want to initialize it all values to zero
I did something like this
for(int i=1; i<=6;i++) {
for(int j=1; j<=6; j++) {
cells[i,j] = 0;
}
}

Проблема в том, что он не может преобразовать int 0 в тип Cell. Как инициализировать их в первый раз? Например, у меня есть [6,6] массив, и я хочу назначить каждую ячейку [2,3].Value = 0

благодаря

спросил(а) 2020-04-04T04:58:32+03:00 6 месяцев, 2 недели назад
1
Решение
112

Проблема в том, что он не может преобразовать int 0 в тип Cell. Как инициализировать их в первый раз?

Переход к вашему классу сначала делает x и y public (при условии, что вы обращаетесь к ним в методах, не входящих в ваш класс Cell:

class Cell
{
public int x;
public int y;
Warrior warrior;
};

Затем вы должны получить доступ к своим ученикам:

Cell[,] cells = new Cells[6,6];

for(int i=0; i<6;i++)
{
for(int j=0; j<6; j++)
{
cells[i,j].x = cells[i,j].y = 0;
}
}

Вышеупомянутое означает сброс значений до 0. Если вы хотите, чтобы это при инициализации, создайте конструктор:

Cell(Warrior getWarrior)
{
x = 0;
y = 0;
warrior = getWarrior;
}

Клетки [,] cells = новые ячейки [6, 6];

for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
cells[i, j]= new Cells(sendWarrior);
Console.WriteLine("\t{0} {1}", cells[i, j].x, cells[i, j].y);
}
}

ответил(а) 2020-04-04T05:13:36.271238+03:00 6 месяцев, 2 недели назад
41

Вы можете сказать следующее:


class Cell {
public int x {get; set;}
public int y {get; set;}
Warrior warrior {get; set;}
};

Cell[,] cells = new Cells[6, 6];

// Arrays are zero-based in C#, so they start with 0
for(int i = 0; i < Cells.GetLength(0); i++) // <- Better get length than put "6"
for(int j = 0; j < Cells.GetLength(1); j++)
cells[i, j] = new Cell() { // <- Do not forget to create Cell
x = 0, // <- Overshoot, x will be 0 by default, to show the trick only
y = 0 // <- Overshoot, y will be 0 by default, to show the trick only
};

ответил(а) 2020-04-04T04:58:32+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема