繁体   English   中英

在 C# 中的 IEqualityComparer 中使用泛型

[英]Using Generics in an IEqualityComparer in C#

我有一个 C# 类定义如下:

public class Group<T> : ICloneable where T : CustomGroup
{
  ...
}

当我最初实现它时,它没有泛型。 但是,由于一些新的要求,我不得不在这个类上使用泛型。 现在,这个类有一个IEqualityComparer 它在它的预泛型实现中起作用。 但是,现在,我不确定如何定义类和方法签名。

public class GroupComparer : IEqualityComparer<Group>
{
  public bool Equals(Group a, Group b)
  {
    return (a.Id == b.Id);
  }

  public int GetHashCode(Group obj)
  {
    return obj.GetHashCode();
  }
}

这不再编译说“使用泛型类型组需要 1 个类型参数”。 但是,我不确定如何更新类和方法签名以支持Group<T> ,其中 T 必须是CustomGroup

有没有办法做到这一点? 如果是这样,如何?

使您的比较器类也通用:

public class GroupComparer<T> : IEqualityComparer<Group<T>> where T : CustomGroup
{
  public bool Equals(Group<T> a, Group b<T>)
  {
    return (a.Id == b.Id);
  }

  public int GetHashCode(Group<T> obj)
  {
    return obj.GetHashCode();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM