Как составить список массивов цветов? C# - PullRequest
0 голосов
/ 04 мая 2020

Мне нужен список массивов цветов, к которым я могу получить доступ. Пока у меня есть это:

public List<Color[,,]> coloursList = new List<Color[,,]>();

и затем, когда я хочу добавить в список,

Color[,,] testColor = new Color[originalColour, originalColour, originalColour];

coloursList.Add(testColor);

Это имеет смысл для меня, и это то, что другие рекомендовали онлайн. Проблема в том, что я получаю три ошибки во второй строке: Невозможно неявно преобразовать тип 'UnityEngine.Color' в 'int' . Я не понимаю, почему он ищет переменные типа int. Какие-нибудь очевидные ошибки, которые я могу сделать?

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Вы можете получить этот код в C# различными способами, смотрите ниже код.

var Arraylist = new Color[] { Color.Red, Color.Blue, Color.Green, Color.Purple, Color.Black, Color.Aqua };
List<Color[]> color = new List<Color[]>();
color.Add(Arraylist);


List<Color[]> colors = new List<Color[]>()
{
    new Color[] { Color.Red, Color.Blue, Color.Green, Color.Purple, Color.Black, Color.Aqua }
};

ArrayList Arraylistcolors = new ArrayList()
{
    new Color[] { Color.Red, Color.Blue, Color.Green, Color.Purple, Color.Black, Color.Aqua }
};
0 голосов
/ 04 мая 2020

Эта строка кода:

Color[,,] testColor = new Color[originalColour, originalColour, originalColour];

Не «заполняет» массив значениями originalColour, originalColour, originalColour, но вместо этого (ошибочно, отсюда и полученная ошибка) объявляет многомерный массив с длины измерений.

Так, например:

Color[, ,] array1 = new Color[4, 2, 3];

Инициализирует трехмерный массив со следующими длинами

  • x Размер имеет длину 4 * Измерение 1013 *
  • y имеет длину 2
  • Измерение z имеет длину 3

И поскольку [4, 2, 3] объявляет длину каждого измерения, вы получаете упомянутая ошибка

Невозможно неявно преобразовать тип 'UnityEngine.Color' в 'int'.

Но вам не нужен многомерный массив, вам нужен простой массив (1 измерение) с 3 значениями, поэтому объявление вашего массива должно выглядеть следующим образом

Color[] array1 = new Color[3];

, который инициализирует пустой массив длиной 3.

Для заполнения массива вы можете напишите это:

Color[] array1 = new Color[3];
array1[0] = originalColour;
array1[1] = originalColour;
array1[2] = originalColour;

Если вы хотите инициализировать и заполнить массив в одну строку, правильный синтаксис:

Color[] array1 = new Color[3] { originalColour, originalColour, originalColour };

Вы можете сократить код до этого

Color[] array1 = new [] { originalColour, originalColour, originalColour };

Поскольку вы заполняете массив { originalColour, originalColour, originalColour }, компилятор знает, что вы хотите 1-мерный массив длиной 3, поэтому вы можете записать только new [].

Этот массив может быть добавлен к List<Color[]> например.

public List<Color[]> coloursList = new List<Color[]>();

Color[] array1 = new [] { originalColour, originalColour, originalColour };
coloursList.Add(array1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...