【问题标题】:c# Add a multidimensional array to my listc# 将一个多维数组添加到我的列表中
【发布时间】:2020-01-05 02:44:49
【问题描述】:

我一直在尝试在我的二维数组网格中创建一个位置列表,其中网格的值是某个数字,但我似乎无法正确理解代码的语法

int[,] Field = new int[n,n];
List<int[,]> lijst = new List<int[,]>();
for (int p = 0; p < n; p++)
{
    for (int q = 0; q < n; q++)
    {
        Field[p, q] = 0;
        lijst.Add(?????);
    }
}

我似乎无法找到在 ???? 位置输入的内容 因为 [p,q] 似乎不起作用, (p,q) 也不起作用

编辑: 抱歉,字段是二维数组网格的名称。

编辑 2: 我将网格中的所有值都设置为 0,因为如果我想读取网格,我想知道在哪里放置东西,例如当它为 0 时它是空的,但是当它是 1 或 2 时它得到一个石头放在里面。我想写一个方法来扫描网格中哪些地方是空的,以便它返回一个地方列表而不是值

【问题讨论】:

  • 对于给定的n,您的预期输出是什么? Field的目的是什么?
  • 如果您希望 lijst 成为行/列坐标对的列表,那是错误的数据类型。你想要 var coords = new List&lt;Tuple&lt;int, int&gt;&gt;(); 像这样添加坐标对:coords.Add(new Tuple&lt;int, int&gt;(p, q)); 或者如果你在 winforms 或定义了 Point 的东西中,请接受 TheGeneral 的建议并使用它。
  • List&lt;Point&gt;
  • 为什么要将Field 中的每个值都设置为零?
  • 如果你只想添加 [p,q] 就这样吧,lijst.Add(new int[p,q]);

标签: c# list multidimensional-array


【解决方案1】:

目前我发现了一个偷偷摸摸的侧步,但我觉得它不是最好的,因为我相信它应该能够直接做到这一点,但没关系, 我发现,如果您将 p 和 q 存储在为坐标制作的数据结构中,并且您只需列出这些坐标,您就可以稍后通过获取位置及其特定坐标来检索它们。

List<Plek> EmptyList()
    {
        List<Place> Pair = new List<Place>();

        for (int p = 0; p < n; p++)
        {
            for (int q = 0; q < n; q++)
            {
                if (Field[p, q] == 0)
                {
                    Place pair = new Place(p, q);
                    Pair.Add(pair);
                }
            }
        }

        return Pair;

    }

数据结构

class Place
{
    public int X;
    public int Y;

    public Place(int x, int y)
    {
        this.X = x;
        this.Y = y;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2012-11-05
    相关资源
    最近更新 更多