src/DotNetCommon.Core/Equatable.cs
(完整代码) 1KBnamespace DotNetCommon
{
using System;
/// <summary>
/// 提供用于实现<see cref="System.IEquatable{T}"/>的辅助类。
/// </summary>
/// <remarks>继承<see cref="Equatable{ThisAssembly}"/>的类只需要实现<see cref="Object.GetHashCode"/>方法就可以拥有<see cref="Object.Equals(object)"/>、<c>==</c>、<c>!=</c> 比较的能力</remarks>
public abstract class Equatable<T> : IEquatable<T>
{
/// <summary>
/// 提供对象的哈希码。
/// </summary>
/// <returns></returns>
public abstract override int GetHashCode();
/// <summary>
/// 确定该对象是否等于<paramref name="other"/>。
/// </summary>
public virtual bool Equals(T other) => other is T notNull && notNull.GetHashCode() == GetHashCode();
/// <summary>
/// 确定该对象是否等于<paramref name="obj"/>。
/// </summary>
public override bool Equals(object obj) => obj is T other && Equals(other);
/// <summary>
/// 确定给定的<paramref name="left"/>是否等于<paramref name="right"/>。
/// </summary>
public static bool operator ==(Equatable<T> left, Equatable<T> right) => Equals(left, right);
/// <summary>
/// 确定给定的<paramref name="left"/>是否等于<paramref name="right"/>。
/// </summary>
public static bool operator !=(Equatable<T> left, Equatable<T> right) => !Equals(left, right);
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
