为什么不执行比较 WPF ImageSources 的 if 语句?
Why won't this if statement comparing WPF ImageSources be executed?
我正在检查图像是否与我想要的图像源相匹配,然后实例化 class "Queen"。为此,我遍历对象列表 "nodes",它有一个方法 getType(),其中 returns 一个图像。我正在检查此 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 语句。我怎样才能完成这项工作?
正如@RenéVogt所说,你的if一直没有输入是因为Source == new BitmapImage()
在做参考比较。由于您正在处理两个不同的实例,因此它总是 return false。
如果你想让你的 ifs 工作,你可以检查你的节点的 .UriSource 与新的 BitmapImages'(假设你的节点也是一个 BitmapImage)。
例如:
if (new Uri(Convert.ToString(colony.getNodes()[i].getType().Source)) == new Uri(@"H:\Year 13\Computing\Ant Simulation\LarvaRoom.png"))
我正在检查图像是否与我想要的图像源相匹配,然后实例化 class "Queen"。为此,我遍历对象列表 "nodes",它有一个方法 getType(),其中 returns 一个图像。我正在检查此 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 语句。我怎样才能完成这项工作?
正如@RenéVogt所说,你的if一直没有输入是因为Source == new BitmapImage()
在做参考比较。由于您正在处理两个不同的实例,因此它总是 return false。
如果你想让你的 ifs 工作,你可以检查你的节点的 .UriSource 与新的 BitmapImages'(假设你的节点也是一个 BitmapImage)。
例如:
if (new Uri(Convert.ToString(colony.getNodes()[i].getType().Source)) == new Uri(@"H:\Year 13\Computing\Ant Simulation\LarvaRoom.png"))