2014-10-07 53 views
0

我是新的字典,所以我有这个基本的问题。检查一个特定的密钥在一个字典中的值是什么

我有这样一本字典:

Dictionary<string, string> usersLastStamp = checking.checkLastStamp(); 

我怎样才能做一个if语句来检查,如果一个特定键的值是什么?

像这样:

if(usersLastStamp.the_value_of_key("theKey") == "someValue") 
{ 
    //Do something 
} 

我已经采取一看TryGetValue,但我不是很清楚如何直接在if语句使用它像上面。

+0

你可以谷歌它...如何从字典 – mybirthname 2014-10-07 10:31:20

回答

6

usersLastStamp["theKey"]将抛出一个异常,如果该键不存在在词典中(如指定here)。您可以使用TryGetValue,而不是与short circuit evaluation结合起来:

string value = null; 
if (usersLastStamp.TryGetValue("theKey", out value) && (value == "someValue")) 
{ 
} 
1

你可以尝试

if(usersLastStamp["theKey"] != null && usersLastStamp["theKey"] == "SomeValue") 
{ 
     // Your cdoe writes here 
} 
0

您可以使用

string someVal = ""; 

if (myDict.ContainsKey(someKey)) 
someVal = myDict[someKey]; 

string someVal = ""; 
if (myDict.TryGetValue(somekey, out someVal)) 

,然后你是否:

if (someVal == "someValue") 

TryGetVal如果密钥存在于字典中,如果密钥不存在于字典中,则返回false,则ue接受一个out参数,返回一个bool,重新返回true并更新参数。或者你必须检查密钥是否存在于字典中,并且只有在密钥存在的情况下才能从中获取值。

+0

价值不应该是ContainsKey? – 2014-10-08 13:27:39

+0

@MarcGravell你是对的,纠正它。 – artm 2014-10-08 22:23:32

1

乡亲们已经回答了TryGetValue的做法,但作为一种替代方案:如果它是一个选项,你可以也考虑使用StringDictionary,而不是Dictionary<string,string> - 这将返回null的情况下,有在该键的值,所以你可以使用:

if(usersLastStamp["theKey"] == "someValue") 

没有任何错误的风险。

+1

我很乐意反馈这个downvote;这似乎是一个完全合理的方法。 – 2014-10-07 10:39:33

+0

我实际上也喜欢关于这个downvote的一些反馈。与TryGetValue approuch IMO相比,这看起来更具可读性。 – 2014-10-07 13:56:27

+0

@DanielJørgensen我认为当我指出他们现在被删除的答案中存在一些主要问题时,实际上只是有人不高兴。我怀疑我会生存下去,p – 2014-10-07 14:26:42

相关问题