小编Equ*_*zer的帖子

类型安全等于()

由于我的(单位)测试覆盖率仍然很低,不幸的是,我必须找到很多错误.因此,在重构期间,我严重依赖于C#编译器的类型检查.

今天,我修复了重构期间引入的错误,错过了一行x.Equals(aThingWrappingOriginalThing).就这样bool Equals(object T),编译器没有抱怨.但是,有90%的时间我Equals()直接使用(而不是通过BCL),我打算在逻辑上比较相同类型的对象.

现在我想知道为什么我从来没有见过有人Equals()为这种情况推广类型安全版本(在C#中).这是最好的做法吗?

我很想在这些比较中使用扩展方法,如下所示:

public static bool SafeEquals<T>(this T a, T b)
{
    if (a == null) return b == null;
    return a.Equals(b);
}
public static bool SafeEquals<X>(this IEquatable<X> a, IEquatable<X> b)
{
    if (a == null) return b == null;
    return a.Equals(b);
}
Run Code Online (Sandbox Code Playgroud)

这些可以优化吗?

这是关于我发现的主题的唯一博客文章,对于java:http: //rickyclarkson.blogspot.com/2006/12/making-equalsobject-type-safe.html

c# equals type-safety

8
推荐指数
1
解决办法
656
查看次数

标签 统计

c# ×1

equals ×1

type-safety ×1