【问题标题】:How to use key in multi-dimensional Array如何在多维数组中使用键
【发布时间】:2026-01-30 21:55:02
【问题描述】:

如何创建一个包含类别及其子类别的数组。

例子:

Fruit
  --> Apple
  --> Banana

Car
  --> Civic
  --> Vitz

Drinks
 --> Pepsi
 --> Dew

所以它变成了一个完整的数组。

注意:我不想使用任何集合,例如列表、字典等。

【问题讨论】:

  • 然后告诉我们你尝试了什么,以及它是如何失败的
  • 结果会是什么样子?
  • 尝试使用 .... new string[3, 3] {{"Apple","Banana"}, {"Civic","Vitz"} }; 但对于 keyFruit 你需要使用 Dictionary
  • 我不允许使用字典。
  • “你不被允许”是什么意思?这是某种运动吗?

标签: c# .net multidimensional-array


【解决方案1】:

如果您仅限于使用数组,那么您可以执行以下操作:

object[][] arr = new object[3][];
arr[0] = new object[2];
arr[0][0] = "Fruit";
arr[0][1] = new string[2] { "Apple", "Banana" };
arr[1] = new object[2];
arr[1][0] = "Car";
arr[1][1] = new string[2] { "Civic", "Vitz" };
arr[2] = new object[2];
arr[2][0] = "Drinks";
arr[2][1] = new string[2] { "Pepsi", "Dew" };

然后迭代:

for (int i = 0; i < 3; i++)
{
    StringBuilder line = new StringBuilder();
    line.Append((string)arr[i][0] + ": ");
    string[] subs = (string[])arr[i][1];
    for (int j = 0; j < 2; j++)
    {
       line.Append(subs[j] + "; ");
    }
    MessageBox.Show(line.ToString());
}

注意,因为这使用了一个锯齿状数组(又名数组数组),所以您可以有不同数量的子类别。然后遍历子类别,您需要使用计数。

【讨论】:

    【解决方案2】:

    创建一个名为arrayobject的接口,然后创建类fruit,car和drinks,然后实现该接口并制作一个接口数组

    类似

    public interface arrayobject 
    {
        string description();
    }
    class Fruit:arrayobject
    {
        public string fruittype;
        public Fruit(string type)
        {
            fruittype = type;
        }
    
        public string description()
        {
            return fruittype;
        }
    }
    class Car : arrayobject
    {
        public string Cartype;
        public Car(string type)
        {
            Cartype = type;
        }
    
        public string description()
        {
            return Cartype;
        }
    }
    

    现在你可以创建一个数组对象的数组

    arrayobject[] mylist = new arrayobject[2];
    mylist[0] = new Fruit("banana");
    mylist[1] = new Car("my Ford");
    

    【讨论】: