gpt4 book ai didi

c# - 方法参数 C# 中的有界泛型类型

转载 作者:太空狗 更新时间:2023-10-30 01:21:34 26 4
gpt4 key购买 nike

问题:C# 是否支持方法参数中的有界泛型类型?如果是这样,语法是什么?

上下文:我正在编写一个实用方法来对 Dictionary 进行排序关于字典中的值。因此 Dictionary 中的值必须实现 IComparable界面。

尝试:下面的代码需要一个 Dictionary , 得到 KeyValuePair 的列表, 在 Value 上排序然后根据它们的值返回字典中排名靠前的键。

private string[] getTopWords<T , U>(Dictionary<T, U> similarWordsAndWeights)
{
var myList = similarWordsAndWeights.ToList();

myList.Sort((firstPair, nextPair) =>
{
return -firstPair.Value.CompareTo(nextPair.Value);
}
);
var dictionary = myList.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
return createStringArrayFromGenericList(dictionary.Keys.ToList().GetRange(0, 10));
}

但是这段代码不会编译为U不“保证”实现IComparable .语法 private string[] getTopWords<T, U : IComparable>也不会编译。

我可以输入检查以查看我的 U工具 IComparable但是我宁愿不。

最佳答案

在写完我的问题后不久,我查看了 MSDN,并在 generics 上找到了一篇文章我已经完成了,但是在页面的中途我找到了我正在寻找的答案。这是解决方案的代码:

private string[] getTopWords<T , U>(Dictionary<T, U> similarWordsAndWeights) where U : IComparable
{
var myList = similarWordsAndWeights.ToList();

myList.Sort((firstPair, nextPair) =>
{
return -firstPair.Value.CompareTo(nextPair.Value);
}
);
var dictionary = myList.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
return createStringArrayFromGenericList(dictionary.Keys.ToList().GetRange(0, NUMBER_OF_WORDS_TO_RETURN));
}

看来您是在参数之后进行边界声明。我之前一直在寻找一些东西(有 Java 背景),当然找不到任何东西。只需多花几分钟就可以在 Google 上完成令人惊叹的事情...

我认为分享我的解决方案是明智的,因为我无法在 SO 上找到任何具体内容,这可能对最终搜索相同内容的其他人有所帮助。

关于c# - 方法参数 C# 中的有界泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191498/

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