Dictionary<string, string> dict = new Dictionary<string,string>();
dict.Add("Hello", "Goodbye");
dict.Add("Morning", "Evening");
dict.Add("Blue", "Red");
foreach(KeyValuePair<string,string> item in dict)
{
Console.WriteLine("Key = {0}, Value = {1}", dict.Keys, dict.Values);
}
Console.ReadLine();
希望将键和值作为输出,但我得到以下结果:
键= System.Collections.Generic.Dictionary2 + KeyCollection [System.String,System.String] 价值= System.Collections.Generic.Dictionary2 + ValueCollection [System.String,System.String] 键= System.Collections.Generic.Dictionary2 + KeyCollection [System.String,System.String] 价值= System.Collections.Generic.Dictionary2 + ValueCollection [System.String,System.String] 键= System.Collections.Generic.Dictionary2 + KeyCollection [System.String,System.String] 价值= System.Collections.Generic.Dictionary2 + ValueCollection [System.String,System.String]
关于朝着正确方向前进的任何建议都会很棒,遵循https://msdn.microsoft.com/en-us/library/bb346997(v=vs.110).aspx
上的文档答案 0 :(得分:2)
基本上,您正在迭代一个名为String hexString24 = StringUtils.leftPad(source.getCompany().toString(16), 24, "0");
ObjectId objCompany = new ObjectId(hexString24);
的集合,并且在foreach循环内的迭代过程中,您将dict
集合的每个元素都转换为dict
变量。您的代码问题item
是一个集合,因此您无法像单个元素一样访问它的属性。更好的是你改变你的代码,如
dict
答案 1 :(得分:1)
dictionary.Keys
和dictionary.Values
会返回键或值的集合
Console.WriteLine
通过调用.ToString()
来格式化值。
所以你得到了你的代码正在做的事情
dict.Keys.ToString()
// System.Collections.Generic.Dictionary2+KeyCollection[System.String,System.String]
dict.Values.ToString()
// System.Collections.Generic.Dictionary2+ValueCollection[System.String,System.String]
当您遍历字典时,在每次迭代时,您将获得类型KeyValuePair
的实例,其中包含键和对应值。这就是为什么你应该使用迭代项来访问所需的值
foreach(KeyValuePair<string,string> item in dict)
{
Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);
}
答案 2 :(得分:0)
将您的WriteLine更改为:
Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);