1

辞書の「getAt」メソッドが失敗する理由を説明してください

List<BString> infoKeys = new List<BString>(infoDict.Keys); 
if (infoKeys.Contains(TorrentFileKeyWords.FILES_KEY) == true) //"files"
{   
        List<BaseType> multiFiles = ((BList)dict[TorrentFileKeyWords.FILES_KEY]).Value; <<< this fails

したがって、infoDictはinfoDict.KeysのDictionary<String, BString> Containsであり、特定のアイテム(BStringタイプ)を見つけるために使用されますが、4行目は失敗します...センスがありません

私は c# に慣れていないので、どのメソッドをオーバーライドする必要がありますか (現在、GetHashCode、==、!= & equals があります)

4

2 に答える 2

3

Keysルックアップを実行するために新しいリストにコピーする必要はありません。実際、次のメソッドを使用して、キーがディクショナリに存在するかどうかを確認し関連付けられた値を 1 回の操作で取得できます。TryGetValue

BList bList;
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList))
{
    List<BaseType> multiFiles = bList.Value;
    // use multiFiles here
}
于 2012-04-05T19:56:38.000 に答える