質問: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>もコンパイルされません。
Ucheckと入力して、自分の実装を確認することはできますが、IComparableそうではありません。