[英]dictionary ContainsKey method
請解釋為什么字典的“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 是一個Dictionary<String, BString>
Contains on infoDict.Keys 用於查找特定項目(BString 類型)但是第 4 行失敗......沒有感覺
我沒有使用 c#.. 所以我必須覆蓋哪些方法(現在我有:GetHashCode、==、!= & equals)
您不需要將Keys
復制到新列表即可執行查找。 事實上,您可以使用TryGetValue
方法檢查鍵是否存在於字典中並在單個操作中檢索其關聯值:
BList bList;
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList))
{
List<BaseType> multiFiles = bList.Value;
// use multiFiles here
}
我懷疑問題是你在一個地方使用infoDict
,而在另一個地方使用dict
...
目前尚不清楚為什么要從infoDict
的鍵創建列表,而不是僅僅調用ContainsKey
或(更好)使用TryGetValue
開始。 此外,我建議不要為您的類型名稱添加“B”前綴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.