2

私たちのプロジェクトでこのコードに気づきました

Dictionary<int, IList> someDict = new Dictionary<int, IList>();

価値のためにインターフェースを使用することのアイデアは何ですか? IList を実装/サポートするすべてのリストに入れることができるということですか? たとえば、辞書に LList<int>とfor の値を入れることはできますか?List<string>

4

4 に答える 4

4

よりジェネリックな型を持つことができるので、後で型を変更した場合のリファクタリングが容易になります。

List<T> または IList<T>

リファクタリング ジョブを減らす最善の方法は、可能であれば IEnumerable を使用することです。

于 2012-11-29T09:02:20.927 に答える
2

の任意の実装をIList値として配置できます

Dictionary<int, IList> someDict = new Dictionary<int, IList>();
someDict[1] = new List<string>() { "Hello", "World" };
someDict[2] = new List<int>() { 42 };
someDict[3] = new int[] { 1, 2, 3 };
someDict[4] = new ArrayList();
于 2012-11-29T09:04:48.823 に答える
1

はい、特別なクラスから切り離したいのですが、ディクショナリで使用される型が IList 機能を提供することを確認したいだけです。タイプがこれを提供する限り、 を含めて使用できますList<T>。型のメソッド/プロパティのセットを保証するコントラクトのようなものです

于 2012-11-29T09:02:25.517 に答える
1

はい、宣言された型から継承する型を使用できます。あなたの場合、List<int>から構築されたジェネリック型List<T>であり、それは次に継承しIListます。そのため、はい、List<int>辞書で使用できます。

于 2012-11-29T09:03:19.917 に答える