问题:C#是否支持方法参数中的有界泛型类型?如果是的话,语法是什么?方法参数中的有界泛型类型C#
语境:我写排序在字典中的值的Dictionary
实用方法。因此Dictionary
中的值必须实现IComparable
接口。
尝试(S):下面的代码需要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
然而我宁愿不。
只是在C#中提到这些被称为泛型类型约束,您应该能够通过搜索这些术语在StackOverflow和其他网站上找到关于它们的大量其他信息。 – jam40jeff 2013-03-06 05:08:43
谢谢@ jam40jeff我会记住的,所以下次我可以找到相关信息。 – nattyddubbs 2013-03-06 13:19:08