为什么 IntPtr 没有实现 IEquatable<IntPtr>?

Why does IntPtr not implement IEquatable<IntPtr>?

我在我的应用程序中发现了相当多的垃圾收集器停顿,所以我对其进行了分析,发现我的一个方法产生了大量垃圾,除了这个之外什么也没做:

return Address.Equals(other.Address)

其中 Address 是一个 IntPtr

事实证明 IntPtr 不像大多数值类型那样实现 IEquatable<T>,因此我每次都装箱 other.Address

IntPtr 没有实现该接口有什么充分的理由,或者这是一个疏忽?

这是一个疏忽。 IEquatable<T> 是在 IntPtr 存在后添加到 .NET 2.0 中的。 BCL 中有一些地方没有正确升级,似乎没有人有兴趣修复它们。

只需使用==。无论如何,它是更好的风格,因为它清楚地表明了你的意图。