2012-04-05 2 views
1

Bitte erklären, warum das Wörterbuch ‚getAt‘ MethodeWörterbuch ContainsKey Methode

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 

versagt So ist infoDict ein Dictionary<String, BString> auf infoDict.Keys Enthält verwendet, um ein bestimmtes Element zu finden (vom Typ bstring) Aber Linie 4 versagt ... tut haben sens

ich nicht mit C# gewohnt bin .. so welche Methoden muss ich außer Kraft setzen (jetzt habe ich: GetHashCode, ==, = & gleich)

+6

Welche Fehler erhalten Sie? – Douglas

+1

Was ist 'dict' definiert? – Matthew

+2

Sie haben nicht genügend Code präsentiert, um Ihnen richtig zu helfen, und Sie haben den Fehler auch nicht angezeigt. Bitte lesen Sie http://tinyurl.com/so-hints. –

Antwort

2

ich vermute, dass das Problem ist, tha t sind Sie infoDict an einem Ort, und dict in einem anderen mit ...

Es ist nicht klar, warum Sie eine Liste von den Tasten von infoDict sind zu schaffen, anstatt nur ContainsKey Aufruf, oder (besser) mit TryGetValue zu starten mit. Zusätzlich würde ich gegen ein "B" Präfix für Ihre Typnamen empfehlen.

+0

Wow, du hast Recht !! mein Fehler – pulancheck1988

3

Sie sollten Ihre Keys nicht in eine neue Liste kopieren müssen, um die Suche durchzuführen. In der Tat können Sie prüfen, ob der Schlüssel im Wörterbuch vorhanden ist und den zugehörigen Wert in einem einzigen Arbeitsgang mit der TryGetValue Methode abrufen:

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