【问题标题】:How do you make a List of Arrays of Colours? C#如何制作颜色数组列表? C#
【发布时间】:2020-05-04 08:16:27
【问题描述】:

我需要一个可以访问的颜色数组列表。到目前为止,我有这个:

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

然后,当我想添加到列表中时,

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

coloursList.Add(testColor);

这对我来说很有意义,也是其他人在网上推荐的。问题是我在第二行遇到三个错误:无法将类型“UnityEngine.Color”隐式转换为“int”。 我不明白它为什么要寻找 int 类型变量。我可能会犯任何明显的错误吗?

【问题讨论】:

  • 你想做什么?声明的 coloursList 是颜色的三维数组列表。但我猜你真正想要的是具有三种颜色属性的对象列表
  • List coloursList = new List();颜色 newColor = Color.Lime; coloursList.Add(newColor);
  • @JesúsLópez 不,我有几个会改变颜色的游戏对象,newColour = (firstColour + secondColour + thirdColour) / 3; 就是这样。我需要为每个游戏对象将这些 firstColour、secondColour 和 ThirdColour 保存在某个地方
  • @itsnotandreea_ 您可以将这些颜色保存在具有三个颜色属性的对象中,如下所示:gist.github.com/jesuslpm/c15d8f0b1e698f5ebd2b01b2d7a6bd34。我认为您混淆了维度和索引

标签: c# arrays list colors


【解决方案1】:

你可以用 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 }
};

【讨论】:

    【解决方案2】:

    这行代码:

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

    不会用值originalColour, originalColour, originalColour“填充”数组,而是(错误地,因此您收到错误)声明了一个具有维度长度的多维数组。

    例如:

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

    这会初始化一个 3 维数组,长度如下

    • x 维度的长度为 4
    • y 维度的长度为 2
    • z 维度的长度为 3

    因为[4, 2, 3] 声明了每个维度的长度,所以您会收到上述错误

    无法将类型“UnityEngine.Color”隐式转换为“int”。

    但是你不想要一个多维数组,你想要一个有 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 } 填充数组,编译器知道您想要一个长度为3 的一维数组,因此您只能编写new []

    这个数组可以添加到List&lt;Color[]&gt; 例如。

    public List<Color[]> coloursList = new List<Color[]>();
    
    Color[] array1 = new [] { originalColour, originalColour, originalColour };
    coloursList.Add(array1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2015-12-08
      • 2011-07-28
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多