C# 字典法
请解释dictionary的“getAt”方法失败的原因C# 字典法,c#,dictionary,contains,C#,Dictionary,Contains,请解释dictionary的“getAt”方法失败的原因 List<BString> infoKeys = new List<BString>(infoDict.Keys); if (infoKeys.Contains(TorrentFileKeyWords.FILES_KEY) == true) //"files" { List<BaseType> multiFiles = ((BList)dict[TorrentFileKeyWor
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
List infoKeys=新列表(infoDict.Keys);
if(infoKeys.Contains(TorrentFileKeyWords.FILES\u KEY)==true)/“FILES”
{
列出多文件=((BList)dict[TorrentFileKeyWords.FILES_KEY]).Value;我怀疑问题在于您在一个位置使用了infoDict
,而在另一个位置使用了dict
不清楚为什么您要从infoDict
的键创建列表,而不仅仅是调用ContainsKey
,或者(更好)从TryGetValue
开始。此外,我建议不要使用“B”类型名称的前缀。我怀疑问题在于您在一个位置使用了infoDict
,而在另一个位置使用了dict
不清楚为什么您要从infoDict
的键创建列表,而不仅仅是调用ContainsKey
,或者(更好)从TryGetValue
开始。此外,我建议不要使用“B”类型名称的前缀。您不需要将键复制到新列表来执行查找。事实上,您可以使用TryGetValue
方法检查字典中是否存在该键,并在单个操作中检索其关联值:
BList bList;
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList))
{
List<BaseType> multiFiles = bList.Value;
// use multiFiles here
}
blistblist;
if(dict.TryGetValue(TorrentFileKeyWords.FILES_KEY,out bList))
{
列表多文件=bList.Value;
//在这里使用多文件
}
您不需要将键
复制到新列表来执行查找。事实上,您可以使用TryGetValue
方法检查字典中是否存在该键,并在一次操作中检索其关联值:
BList bList;
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList))
{
List<BaseType> multiFiles = bList.Value;
// use multiFiles here
}
blistblist;
if(dict.TryGetValue(TorrentFileKeyWords.FILES_KEY,out bList))
{
列表多文件=bList.Value;
//在这里使用多文件
}
您遇到了什么错误?您没有提供足够的代码来正确地帮助您,而且您也没有提供错误。请阅读。类型到底是什么?如果infoDict
是一本字典
,那么infoDict.Keys
将是String
的集合,而不是BString
的集合。您遇到了什么错误?您没有提供足够的代码来正确帮助您,而且您也没有提供错误。请阅读。真正的类型是什么?如果infoDict
是一本字典,那么infoDict.Keys
将是String
的集合,而不是BString
的集合。