代码检查:结构体缺少 'IEquatable' 实现(私有可访问性)
此检查建议结构体需要实现 IEquatable<T> 接口,以提高性能并减少在泛型上下文中比较此结构体实例时的内存开销。 仅当结构体重写了相等成员,并且它(或其包含类型,例如记录)实际用于相等比较时,才会发出警告。
在这种情况下,实现 IEquatable<T> 将带来以下好处:
减少内存消耗:当在未实现
IEquatable<T>的结构体上调用Equals()时,运行时会将值类型结构体转换为引用类型对象,这涉及装箱操作——在堆上创建一个新对象以保存值和必要的元数据。在实现
IEquatable<T>后,结构体的实例将直接使用Equals(T other)或Equals(object obj)的自定义实现进行比较,而无需将结构体转换为对象。更好的性能:实现
IEquatable<T>可以在使用相等比较的集合(如List<T>或Dictionary<TKey , TValue>)中带来更好的性能。 由于IEquatable<T>.Equals(T other)直接处理值类型,与结构体的Equals(object)相比,它更快。
作为快速修复,JetBrains Rider 帮助您调用 相等成员生成对话框 ,从而帮助为您的结构体实现 IEquatable<T>。
最后修改日期: 2025年 9月 26日