可以改进IEqualityComparer的这种实现吗?

maf*_*afu 3 c# iequalitycomparer

我没有看到这个代码有任何问题,但感觉我错过了一些东西.也许可以减少行数.或者甚至有一个错误需要修复?我愿意接受任何建议.

public class NameComparer : IEqualityComparer<FileInfo>
{
    public bool Equals (FileInfo x, FileInfo y)
    {
        if (x == null) {
            return y == null;
        }

        if (y == null) {
            return false;   
        }

        return x.Name.Equals (y.Name);
    }

    public int GetHashCode (FileInfo obj)
    {
        return obj.Name.GetHashCode ();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*lph 9

如果FileInfo的相等运算符返回true,则应首先返回true.另外,指定要执行的字符串比较的类型.大概你想忽略大小写,因为这些是文件名.

public class NameComparer : IEqualityComparer<FileInfo>
{
   public bool Equals(FileInfo x, FileInfo y)
   {
      if (x == y)
      {
         return true;
      }

      if (x == null || y == null)
      {
         return false;
      }

      return string.Equals(x.FullName, y.FullName, StringComparison.OrdinalIgnoreCase);
   }

   public int GetHashCode (FileInfo obj)
   {
      return StringComparer.OrdinalIgnoreCase.GetHashCode(obj.FullName);
   }
}
Run Code Online (Sandbox Code Playgroud)