我在我的应用程序中看到了相当多的垃圾收集器停顿,因此我对其进行了分析,并发现我的方法生成了大量垃圾,只做了这个:
return Address.Equals(other.Address)
其中Address
是IntPtr
。
事实证明IntPtr
并没有像大多数值类型那样实现IEquatable<T>
,因此我每次都在装other.Address
。
IntPtr
是否有充分理由不实施该界面,或者这是否是一种疏忽?
答案 0 :(得分:2)
这是一种疏忽。 IEquatable<T>
存在后,在{...}}中添加了IntPtr
。 BCL中有一些地方没有正确升级,似乎没有人有兴趣修理它们。
只需使用==
即可。无论如何它都是更好的风格,因为它清楚地表明了你的意图。