如何在C#中使用for循环访问Dictionary

时间:2015-04-16 16:59:37

标签: c# dictionary

我在C#中声明了一个字典。但我无法通过foreach访问它。

Dictionary<int,string>dic=new Dictionary<int,string>()
{
  {78,"A"},
  {81,"B"},
  {90, "C"}
} 

现在我想将其整数值与其他变量(count)进行比较。如果匹配则它将给出相应的字符串值。如何通过for循环访问字典? 我试过这样的。

foreach(int p in dic.Value)
{
   if(dic.ContainsKey(p)==count)
   {
      Console.WriteLine(dic.Values(p));
   }
}

它不起作用。在任何网站都找不到任何东西。提前帮助。

3 个答案:

答案 0 :(得分:4)

我不确定你在这里要问的是什么。但是,下面是如何使用foreach遍历字典的键值对。

var dic = new Dictionary<int, string>
{
    {78, "A"},
    {81, "B"},
    {90, "C"}
 };
//To loop over the key value pairs of a dictionary
foreach (var keyValue in dic)
{
  Console.WriteLine("This is the key: {0}",keyValue.Key);
  Console.WriteLine("This is the value: {0}", keyValue.Value);
}

但是,我认为这就是你要做的事情,它不需要循环来查找密钥是否包含在字典中。

const int count = 78;

if (dic.ContainsKey(count))
{
    Console.WriteLine(dic[count]);
}
else
{
    Console.WriteLine("The dictionary does not contain the key: {0}", count);
}

正如@john在评论中提到的那样,您也可以使用Dictionary.TryGetValue来获取指定键的值

string value;
var success = dic.TryGetValue(count, out value);

if (success)
    Console.WriteLine("The dictionary value is: {0}", value);

答案 1 :(得分:3)

你可以这样使用foreach迭代:

foreach(KeyValuePair<int, string> pair in dic)
{
  if(pair.Key==count)
    Console.WriteLine(pair.Value); 
}

答案 2 :(得分:1)

尝试example.

using System;
using System.Collections.Generic;

class Program
{
   static void Main()
   {
      Dictionary<string, int> dictionary =
      new Dictionary<string, int>();

     dictionary.Add("apple", 1);
     dictionary.Add("windows", 5);

     // See whether Dictionary contains this string.
     if (dictionary.ContainsKey("apple"))
    {
        int value = dictionary["apple"];
       Console.WriteLine(value);
    }

    // See whether it contains this string.
    if (!dictionary.ContainsKey("acorn"))
    {
        Console.WriteLine(false);
    }
  }

}