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