请解释为什么字典的'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行失败...没有sens
我不习惯使用c#..那么我必须重写哪些方法(现在我有: GetHashCode,==,!= & equals)
发布于 2012-04-06 03:54:50
我怀疑问题在于您在一个地方使用infoDict,而在另一个地方使用dict……
不清楚为什么要从infoDict的键创建一个列表,而不是仅仅调用ContainsKey,或者(更好的)使用TryGetValue开始。此外,我建议您的类型名称不要使用"B“前缀。
发布于 2012-04-06 03:56:38
您不需要将Keys复制到新的列表中来执行查找。实际上,您可以检查该键是否存在于字典中,并使用TryGetValue方法在单个操作中检索其关联值:
BList bList;
if (dict.TryGetValue(TorrentFileKeyWords.FILES_KEY, out bList))
{
List<BaseType> multiFiles = bList.Value;
// use multiFiles here
}https://stackoverflow.com/questions/10035048
复制相似问题