创建了一个Bitmap数组
public static Bitmap[] picture = new Bitmap[2] { bitmap.picture1 , bitmap.picture2 };
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方法。
用字典dic<int,bitmap>保存预设图,picbox.tag=1,picbox.image=dic[1],以后判读均有字典来,if(dic.containskey((int)picbox.tag)) ……
其次,为什么不用对象直接比较,原因是对象是个内存块,程序里用它时一般代表这个块的首地址。对象赋值后结果不定,可能直接引用该地址,也可能复制块内容,也可能做块内容转换。即带来的后果难料,所以为了避免此类问题,一般不用对象直接做比较,就算用也要用equals方法。