C# 为什么IntPtr不实现IEquatable<;IntPtr>;?

C# 为什么IntPtr不实现IEquatable<;IntPtr>;?,c#,boxing,intptr,iequatable,C#,Boxing,Intptr,Iequatable,我在应用程序中看到大量垃圾收集器暂停,因此我对其进行了分析,发现大量垃圾是由我的一个方法生成的,该方法只执行以下操作: 返回地址等于(其他地址) 其中Address是IntPtr 原来IntPtr不像大多数值类型那样实现IEquatable,因此每次我都在装箱other.Address IntPtr没有实现该接口有什么好的理由吗?或者这是一个疏忽?这是一个疏忽IEquatable。BCL中有几个地方没有正确升级,似乎没有人对修复它们感兴趣 只需使用==。无论如何,这是一种更好的风格,因为它清楚地

我在应用程序中看到大量垃圾收集器暂停,因此我对其进行了分析,发现大量垃圾是由我的一个方法生成的,该方法只执行以下操作:

返回地址等于(其他地址)

其中
Address
IntPtr

原来
IntPtr
不像大多数值类型那样实现
IEquatable
,因此每次我都在装箱
other.Address


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

这是一个疏忽<在存在
IntPtr
之后,在.NET 2.0中添加了code>IEquatable。BCL中有几个地方没有正确升级,似乎没有人对修复它们感兴趣


只需使用
==
。无论如何,这是一种更好的风格,因为它清楚地显示了您的意图。

我查看了页面,但看不到任何迹象说明为什么没有。也许这是一个疏忽——如果他们实现了Equals,为什么不IEquatable呢?我问这个问题是因为我想知道这是否与IntPtr根据目标拱门改变大小有关。但如果没有好的理由,我会在某个地方提出一个错误(不知道我应该在哪里,不过,哈哈)。我也有点沮丧;)为了扭转这种局面,你有没有一个很好的理由不只是拥有
Address==other.Address
?只是我写的这行代码在我自己的
Equals()
方法中,所以如果你明白我的意思的话,我是“跟风”的。话虽如此,现在我已经发现了问题,我已经将行更改为
Address==other.Address