簡體   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