Code Bye

C# Array.IndexOf(bitmap.picture, (Bitmap)pictureBox1.Im

创建了一个Bitmap数组
public static Bitmap[] picture = new Bitmap[2] { bitmap.picture1 , bitmap.picture2 };

pictureBox1的图像已经赋值为bitmap.picture1
pictureBox1.Image=bitmap.picture1;

需要判断pictureBox1里面的图像能否属于Bitmap的picture数组(也就判断某元素能否存在数组中)

Array.IndexOf(bitmap.picture, (Bitmap)pictureBox1.Image)结果等于-1,也就是不存在。
哪里错了?求判断的正确代码?

解决方案

20

首先,一般人不会用一个对象去做比较,会用变通方法去做,例如:
用字典dic<int,bitmap>保存预设图,picbox.tag=1,picbox.image=dic[1],以后判读均有字典来,if(dic.containskey((int)picbox.tag)) ……
其次,为什么不用对象直接比较,原因是对象是个内存块,程序里用它时一般代表这个块的首地址。对象赋值后结果不定,可能直接引用该地址,也可能复制块内容,也可能做块内容转换。即带来的后果难料,所以为了避免此类问题,一般不用对象直接做比较,就算用也要用equals方法。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# Array.IndexOf(bitmap.picture, (Bitmap)pictureBox1.Im