在winform开发中,通过一个资源文件得到一个image对象,
Image bp = global::Properties.Resources.pic1;
为什么下面的引用比较结果为false,
Object.ReferenceEquals(Resources.pic1, bp);
感觉是同一个引用应该为true才对啊( Object.Equals()同样为false),猜测是不是image类中重载了赋值运算符,求指教
------解决方案--------------------
看下resouce的源代码,应该是每次访问返回一个新的Image对象。
------解决方案--------------------
看了下Resouces的代码
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap output {
get {
object obj = ResourceManager.GetObject("output", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
用reflector看ResourceManager.GetObject代码,比较复杂,但是我同意老曹的观点,每次Properties.Resources.pic1返回的是一个image的copy.