正在记录哈希表属性

本文关键字:属性 哈希表 记录 | 更新日期: 2023-09-27 18:00:42

我有一个Hashtable,我正在尝试记录它的值。CCD_ 2的名称是"props"。我的代码如下:

    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
这可能与KeyValuePair在System.Collections.Generic内和Hashtable在System.Collections内有关吗?

正在记录哈希表属性

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

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

当然,只需循环:

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

它只有几行——如果你在多个地方需要它,你可以很容易地把它放在一个方法中。

循环时记录日志。

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));
}