【发布时间】:2016-03-22 09:44:37
【问题描述】:
如果cachePath 是一个字符串,我可以这样做
if(value.Equals(this.cachePath, StringComparison.Ordinal))
现在cachePath 的类型为ImageSource。如果value 与cachePath 相同,我该如何比较?目前我正在这样做
if(this.cachePath == value)
这是唯一的方法吗?或者Equals()如何用于此?
【问题讨论】:
-
因为
ImageSource是Reference Type,比较两个ImageSources将比较参考。不是实际数据。因为String是Value Type,所以比较将比较实际字符串而不是参考。您想转换为Byte[]并比较两个字节数组以获得真正的比较 -
我认为将整张图片读入
byte[]会非常耗时。有没有办法知道引用是否指向同一个资源? -
如果引用相同。 IE。
this.cachePath与value是同一个对象。即this.cachePath = value然后这是检查参考。但是如果cachePath是图像value的副本,那么即使图像是相同的图像,因为它们没有指向同一个对象cachePath == Value将返回false -
OK,在pass-by-reference/pass-by-value的规则之后。如果您愿意,可以将您的 cmets 总结为一个答案。
标签: xamarin comparison xamarin.forms imagesource