2010-06-27 51 views
0

我有一个散列表,它存储IP作为密钥的字符串和我的创建对象在相应的值。不理解异常,不能转换为可读文本

我一直在foreach (DictionaryEntry info in MasterHash.Keys)得到例外。 更具体地说,它发生在调试器到达DictionaryEntry时。 我试图从我的try catch语句中激发消息,但编译器不喜欢我试图将e转换为.ToString.Message

private void UpdateMap(Hashtable masterHash) 
{ 
    try 
    { 
     foreach (DictionaryEntry info in masterHash.Keys) 
     { 
      AxShockwaveFlashObjects.AxShockwaveFlash axFlash = wfh.Child as AxShockwaveFlashObjects.AxShockwaveFlash; 
      IPInstance foo = (IPInstance)info.Value; 

      axFlash.CallFunction(foo.GetMarkerCall().ToString(SaveOptions.DisableFormatting)); 
     } 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.ToString()); 
    } 
} 

回答

1

它可能是无效的转换异常。 masterHash.Keys不是DictionaryEntry。密钥应该是字符串(你的IP字符串)。

编辑:

ICollection MyKeys = MyTable.Keys; 

foreach (object Key in MyKeys) 
{ 
    Console.WriteLine(Key.ToString()); 
} 
+0

我尝试用字符串而不是字典条目实现foreach。 IDE现在抱怨:错误\t 1'string'不包含'Value'的定义,并且没有找到接受'string'类型的第一个参数的扩展方法'Value'(您是否缺少using指令或程序集参考?) 如何在foreach中使用字符串时检索我的对象? – Paul 2010-06-27 01:58:29

+0

更仔细一点,散列表的键被枚举为ICollection。我会编辑一个建议。 – 2010-06-27 02:09:40

+0

如果您使用.net 3.0或更高版本,您可以在'foreach'语句中使用'var'而不是object。 – juharr 2010-06-27 02:59:59

0

我不知道为什么你无法获得捕捉到的异常值。但是,你说,你

商店IP地址为字符串的关键

,而是你通过按键循环,但预期的DictionaryEntry。

尝试做:

foreach(String s in masterHash.Keys)

或类似的东西来代替。

+0

我尝试使用字符串而不是字典条目实现foreach。 IDE现在抱怨:错误'string'没有包含'Value'的定义,也没有找到接受'string'类型的第一个参数的扩展方法'Value'(你是否缺少using指令或程序集参考?) – Paul 2010-06-27 01:54:51

+0

如何在foreach中使用字符串时检索我的对象? – Paul 2010-06-27 01:55:39

相关问题