4

Dictionary を受け取るメソッドに Dictionary を渡すにはどうすればよいですか?

Dictionary<string,string> dic = new Dictionary<string,string>();

//Call
MyMethod(dic);

public void MyMethod(Dictionary<object, object> dObject){
    .........
}
4

2 に答える 2

8

そのまま渡すことはできませんが、コピーを渡すことはできます。

var copy = dict.ToDictionary(p => (object)p.Key, p => (object)p.Value);

次のように、API プログラムがクラスではなくインターフェイスを取るようにすることをお勧めします。

public void MyMethod(IDictionary<object, object> dObject) // <== Notice the "I"

SortedList<K,T>この小さな変更により、APIなど、他の種類の辞書を渡すことができます。

于 2012-05-03T15:20:53.060 に答える
1

読み取り専用の目的で辞書を渡したい場合は、Linq を使用できます。

MyMethod(dic.ToDictionary(x => (object)x.Key, x => (object)x.Value));

タイプセーフな制限により、現在のアプローチは機能しません。

public void MyMethod(Dictionary<object, object> dObject){
    dObject[1] = 2; // the problem is here, as the strings in your sample are expected
}
于 2012-05-03T15:28:18.517 に答える