字典存储和检索

时间:2016-06-02 15:42:07

标签: c# .net

public static Dictionary<string,string> qData = new Dictionary<string,string>();
protected void Page_LoadComplete(object sender, EventArgs e)
{
   qData.Add("businessName",Request.QueryString["businessName"]);
}
protected void craCHeck(object sender, EventArgs e)
{
   string value = "";
   value = qData["businessName"];
}

如果我不评论qData.Add行,则表示该密钥已添加。如果我评论它,它说钥匙没找到......非常困惑和沮丧,不知道我做错了什么。 :/

3 个答案:

答案 0 :(得分:4)

您需要检查字典中是否已存在密钥:

if(qData.ContainsKey("businessName")) 
     qData["businessName"] = Request.QueryString["businessName"];
else 
     qData.Add("businessName", Request.QueryString["businessName"]);

Add方法不会添加或更新键值对,但它只是 添加它。否则,如果密钥已存在于给定的中 字典,你需要使用索引器,如上面的代码所示 样品

甚至比那更好。检查关于通用字典索引器的MSDN states

  

与指定键关联的值。如果指定的密钥是   找不到,get操作会抛出KeyNotFoundException和一个set   operation使用指定的键创建一个新元素。

因此,您还可以按如下方式简化代码:

// No need of using Add() or the indexer. You can 
// just use the indexer instead in either case:
qData["businessName"] = Request.QueryString["businessName"];

答案 1 :(得分:0)

密钥可能已经存在,具体取决于调用上下文 最简单的方法是在添加密钥之前检查密钥是否存在

if (!qData.ContainsKey(key)) 
{
     qData.Add("businessName",Request.QueryString["businessName"]);
}

当您从字典中读取时,请检查密钥是否存在

if (qData.ContainsKey(key)) 
{
      value = qData["businessName"];
}

答案 2 :(得分:0)

protected void Page_LoadComplete(object sender, EventArgs e)
{
   qData["businessName"] = Request.QueryString["businessName"]);
}
protected void craCHeck(object sender, EventArgs e)
{
   string value = "";
   qData.TryGetValue("businessName", out value))
}

但&#34; businessName&#34;的固定密钥;对我来说没有意义

string queryString = string.empty; 
protected void Page_LoadComplete(object sender, EventArgs e)
{
   queryString = Request.QueryString["businessName"]);
}
protected void craCHeck(object sender, EventArgs e)
{
   string value = queryString;
}