我有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
有关吗?
答案 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));
}