gpt4 book ai didi

c# - 图片与 Properties.Resources.image 的比较

转载 作者:行者123 更新时间:2023-11-30 22:16:42 25 4
gpt4 key购买 nike

你能告诉我为什么下面的条件是错误的吗?

List<Image> SelectedImages = new List<Image>();
SelectedImages.Add(Properties.Resources.my_image);
if (SelectedImages[0] == Properties.Resources.my_image) // false
{
...
}

即使我写:

SelectedImages[0] = Properties.Resources.my_image;
if (SelectedImages[0] == Properties.Resources.my_image) // false
{
...
}

如何进行比较?

最佳答案

它们不相等,因为 Properties.Resources 制作了图像的副本并将该副本返回给您的代码。每次获得该图像时,您实际上都在创建一个全新的 Image 对象。它制作一个副本,因为资源通常应该表现得像常量。如果您(例如)以某种方式修改了图片,您不希望您的代码更改图片。

那么您的代码中发生了什么?您最终会比较恰好包含相同数据的两个不同图像对象。 .NET 发现您有两个不同 对象并返回 false。它不会进行“深度”比较以查看对象是否具有相同的数据/状态。

这是一篇文章的链接,该文章从高层次解释了正在发生的事情:https://navaneethkn.wordpress.com/2009/10/15/understanding-equality-and-object-comparison-in-net-framework/

解决您的问题的一种快速方法是逐个像素地比较 Resource 图像和您的 SelectedImage 图像,看看它们是否“相等”。这显然表现不佳。另一种更有效的方法可能是构建一个字典并使用一个键来跟踪图像的原始来源。

关于c# - 图片与 Properties.Resources.image 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com