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
<< <</div>基本上您是在迭代一个名为 dict
的集合,在" foreach循环"内部迭代期间,您将dict
集合的每个元素都带到item
变量。代码的问题是dict
是一个集合,因此您无法像单个元素那样访问其属性。更好地更改代码,例如
foreach(KeyValuePair<string,string> item in dict)
{
Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);
}
Console.ReadLine();
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);
}
将您的写入线更改为:
Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);