问题:C# 是否支持方法参数中的有界泛型类型?如果是这样,语法是什么?
上下文:我正在编写一个实用方法,Dictionary
对字典中的值进行排序。因此,Dictionary
必须实现IComparable
接口中的值。
Attempt(s):下面的代码采用 a 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
但我宁愿不这样做。