gpt4 book ai didi

C# IComparable IComparer 附加参数

转载 作者:行者123 更新时间:2023-11-30 14:48:58 26 4
gpt4 key购买 nike

我如何实现 IComparer

int CompareTo(object obj)

有一个额外的参数,比如

int CompareTo(object obj, Dictionary<int, int> preferences)

preferences 是一个带有Id 的字典。和 NumberOfClicks<int, int>

我想要的是根据字典中的点击次数比较具有categoryId的内容,

示例 Cat 1 有 3 次点击,Cat 2 有 6 次点击。

比较排序 preferences[this.CategoryId].value > preferences[object.CategoryId].value

因此它们按类别排序,但相对于 Dictionary .

最佳答案

您不能将额外的参数传递给 IComparerCompare 方法,因为方法签名必须与接口(interface)中的签名匹配。

你可以做的是用额外的参数构造一个 IComparer 的实例,将它存储在实例中,并根据需要在 CompareTo 中使用:

class MyComparer : IComparer<object> {
private readonly IDictionary<int, int> preferences;
public MyComparer(IDictionary<int, int> preferences) {
this.preferences = preferences;
}
public int Compare(object a, object b) {
... // Perform the comparison with preferences in scope
}
}

关于C# IComparable IComparer 附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39731372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com