记录Hashtable属性

时间:2013-02-22 19:52:09

标签: c# visual-studio-2012

我有Hashtable我正在尝试记录值。 Hashtable的名称是“道具”。 我的代码如下:

    Dictionary<string, string> keyPairs = new Dictionary<string, string>();
    foreach (KeyValuePair<string, string> items in props)
    {
       keyPairs.Add(items.Key, items.Value);
    }

    Logging.Instance.WriteInformation(string.Format("Key: {0} \t Value: {1}", keyPairs.Keys, keyPairs.Values));

然而,这会在运行时产生InvalidCastException

是否有更简单/更明智的方法来记录键/值对? 理想情况下,输出看起来像这样:

 key1        value1
 key2        value2
 key3        value3

作为补充思想,在调试中,异常似乎恰好在foreach循环开始时发生。我也尝试将其设置为KeyValuePair<string, object>,但我得到相同的InvalidCastException 这可能与System.Collections.Generic中的KeyValuePair和System.Collections中的Hashtable有关吗?​​

3 个答案:

答案 0 :(得分:3)

你可以使用一个循环,或者,如果你想要一个单行:

var allPairs = string.Join(Environment.NewLine, 
    keyPairs.Select(kvp => string.Format("Key: {0} \t Value: {1}", kvp.Key, kvp.Value)));
Logging.Instance.WriteInformation(allPairs);

答案 1 :(得分:2)

当然,只是循环:

for (var entry : keyPairs)
{
    Logging.Instance.WriteInformation(string.Format("Key: {0} \t Value: {1}", 
                                      entry.Key, entry.Value);
}

这只是几行 - 如果你需要在一个以上的地方,你可以很容易地把它放在一个方法中。

答案 2 :(得分:1)

循环时记录。

Dictionary<string, string> keyPairs = new Dictionary<string, string>();
foreach (KeyValuePair<string, string> items in props)
{
   keyPairs.Add(items.Key, items.Value);
   Logging.Instance.WriteInformation(string.Format("Key: {0} \t Value: {1}", items.Key, items.Value));
}