主要原因是性能。当泛型在.NET
2.0中引入他们能够添加一堆整齐班如
List<T>,
Dictionary<K,V>,
HashSet<T>,等这些结构大量使用
GetHashCode和
Equals。但是对于值类型,这需要装箱。
IEquatable<T>使结构实现强类型
Equals方法,因此不需要装箱。因此,在将值类型与泛型集合一起使用时,性能会更好。
引用类型不会带来太多好处,但是该
IEquatable<T>实现确实使您避免了强制转换,
System.Object如果频繁调用强制转换会有所不同。
正如Jared Parson的博客所述,您仍然必须实现Object覆盖。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)