【问题标题】:Comparing 2 Lists of type int at equal index比较 2 个相同索引处的 int 类型列表
【发布时间】:2013-02-03 07:08:43
【问题描述】:

我有 2 个列表来跟踪网格上的 x 和 y 坐标。

我循环遍历高度和宽度,然后使用 if 检查来查看 w 和 h 值是否在相同索引的列表中。

这就是我得到的,但它工作不正常。

for (int h = yMin; h <= yMax; h++)
{
  for (int w = xMin; w <= xMax; w++)
  {
    if (x[w] == (w) && y[h] == (h)) 
    {
       //do some code
    }
  }
}

我也尝试在列表上使用 .Contains 方法,但不会在同一索引处比较它们...我不在乎它们在列表中的索引,只要它们在两者中的索引相同。

if (x.Contains(w) && y.Contains(h))

我正在寻找某种方法来测试它们在列表中找到的索引。该列表也可以包含超过 1 个相同的数字。

if (x.Contains(w) && y.Contains(h))
{
    if (x.FoundIndex(w). == y.FoundIndex(h))
    {
        // this would be awesome if it worked!!!!
    }
}

请注意变量.. yMin 和 xMin 从 0 开始,for 循环位于 do while 循环中,每次迭代都会将它们增加 1。 yMax 和 xMax 是我们在网格内部查看的正方形的大小。

也许有更好的方法,我只是不知道。我试图找到一个坐标数据类型/对象,但没有成功。

我能想到的唯一方法是循环遍历 x 列表,并将每个索引与同一索引处的 y 列表进行比较。似乎应该有一种更清洁的方式来做到这一点。

请帮忙!

编辑 1: 在考虑了我想要完成的事情之后,我能够将我的头脑围绕起来并想出这个......这就是我的代码在我的程序中的样子,只是为了你@DJ KRAZE

for (int intCnt = 0; intCnt < lstXCoord.Count(); intCnt++)
{
    if (lstXCoord[intCnt] == intWidth)
    {
        if (lstYCoord[intCnt] == intHeight)
        {
            // do my code..
        }
    }
}

【问题讨论】:

  • Andy 我建议,如果您使用 List,请不要使用 x、h、w、...等变量名,这会使您的代码非常难以阅读。我希望您的其余编码不要那么草率。
  • 我只是用了那个例子。我的真实代码使用匈牙利符号。 lst、int、str 等。;)
  • 感谢您尝试提供遵循默认 C# 准则的代码。最好不要将匈牙利符号作为公共样本。为了让它变得非常好 - 为索引变量和坐标列表使用有意义的名称(如 DJ 建议的那样)。
  • 好吧,也许您应该使用实数符号发布示例.. 让其他人认为您的变量是整数而不是 List
  • 哦,我的错.. 只是认为如果我在那里输入我的问题是/正在使用 C# 代码,这对那些希望回答的人会有所帮助。将来会记住这一点,谢谢!我已经多次使用这个网站,但几乎总是能够在不发帖的情况下找到我的答案。

标签: c# .net list loops


【解决方案1】:

试试这个:

if (x.IndexOf(w) == y.IndexOf(h))
{
    // do your stuff
}

【讨论】:

  • 我知道你的去向,但就像我说的,我不在乎,或者一定知道它可能在什么索引。每个列表可以有 2 个值,最多 1,000 个值。我希望 2 个单独列表的给定索引处的值与我的“w”和“h”相匹配,以了解我正在查看的坐标对是否存在于我正在测试的区域内。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多