小编Jas*_*ink的帖子

用于可空结构的IEqualityComparer

我想为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)

c# generics nullable iequalitycomparer

3
推荐指数
1
解决办法
343
查看次数

标签 统计

c# ×1

generics ×1

iequalitycomparer ×1

nullable ×1