我正在检查图像是否与所需图像源匹配,然后实例化“ Queen”类。为此,我遍历对象列表“节点”,该对象列表具有方法getType(),该方法返回图像。我正在检查Colony.getNodes()列表中的每个图像。
我已经100%确信至少有一张图片与“ H:\ Year 13 \ Computing \ Ant Simulation \ QueenRoom.png”匹配,就像我使用断点检查过的一样。那么为什么不输入我的if语句呢?
我还尝试过将Colony.getNodes()[i] .getType()。Source与BitmapImage的新实例进行比较,在for循环之前创建BitmapImage变量,但这无济于事。
for (int i = 0; i < colony.getNodes().Count; i++)
{
if (colony.getNodes()[i].getType().Source == new BitmapImage(new Uri(@"H:\Year 13\Computing\Ant Simulation\LarvaRoom.png")))
{
nurseryFood.Add(colony.getNodes()[i].getLocation(), 0);
}
if (colony.getNodes()[i].getType().Source == new BitmapImage(new Uri(@"H:\Year 13\Computing\Ant Simulation\QueenRoom.png")))
{
queen = new Queen(colony.getNodes()[i].getLocation(), colony.getNodes()[i].getType().Margin);
}
}
我还有另一个if语句,它具有完全相同的问题。使用断点进行测试时,永远不要输入if语句。我该如何工作?
答案 0 :(得分:0)
正如@RenéVogt所说,您的if从未输入的原因是因为Source == new BitmapImage()
正在进行参考比较。由于您在两个不同的实例上工作,因此它将始终返回false。
如果您希望ifs工作,则可以对照新的BitmapImages(假设您的节点也是BitmapImage)检查Node.UriSource。
例如:
if (new Uri(Convert.ToString(colony.getNodes()[i].getType().Source)) == new Uri(@"H:\Year 13\Computing\Ant Simulation\LarvaRoom.png"))