我想为Nullable结构编写一个相等比较器.让我们说,DateTime?.所以我想出了这个代码:
public class NullableEntityComparer<TEntity, TType> : IEqualityComparer<TEntity>
where TType : struct
where TEntity : Nullable<TType>
{
public bool Equals(TEntity x, TEntity y)
{
if(!x.HasValue && ! y.HasValue) return true;
if(x.HasValue && y.HasValue) return x.Value == y.Value;
return false;
}
public int GetHashCode(TEntity obj)
{
if (obj == null) throw new ArgumentNullException("obj");
if (obj.HasValue) return obj.Value.GetHashCode();
else return obj.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢这个并告诉我:
'TType?' is not a valid constraint. A type used as a constraint must be an interface, a …Run Code Online (Sandbox Code Playgroud)