2012-04-05 18 views
1

辞書の「GetAt機能」メソッドは辞書にContainsKeyメソッド

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がDictionary<String, BString> あるinfoDict.Keysに入って教えてください(タイプBStringの)特定の項目 を見つけるために使用しかし、4行目は失敗しています私は問題がある疑いがある

+6

あなたはどのようなエラーを得ているの? – Douglas

+1

'dict'とは何ですか? – Matthew

+2

あなたが正しく手伝ってくれるほどのコードを提示しておらず、エラーも表示されていません。 http://tinyurl.com/so-hintsをお読みください。 –

答えて

2

:(GetHashCodeメソッドを、==、= &に等しい!今私が持っている)...私は... C#のに使用されておりませんので、私は無効にするためにどのような方法がありますかSENS

を持っているdoesntのそのあなたが一箇所にinfoDictを使用して、別でdictしているのt ...

あなたがinfoDictのキーからリストを作成するだけではなく、起動するTryGetValueを使用してContainsKey、または(より良い)を呼び出している理由は明らかではありませんと。さらに、私はに対してに対して、あなたのタイプ名に "B"接頭辞を付けることを勧めます。

+0

うわー、あなたは正しいです!私の悪い – pulancheck1988

3

ルックアップを実行するためにKeysを新しいリストにコピーする必要はありません。実際には、キーが辞書に存在するかどうかをチェックし、TryGetValue方法使用して、単一の操作でその値を取得できます。

BList bList; 
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList)) 
{ 
    List<BaseType> multiFiles = bList.Value; 
    // use multiFiles here 
}