Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在字典中通过键获取值_C# - Fatal编程技术网

C# 如何在字典中通过键获取值

C# 如何在字典中通过键获取值,c#,C#,当我试图从字典键获取值时,它返回错误 我尝试了以下方法: public Dictionary<string, string> Credentials { get; set; } Approach1: Credentials["Password"] 我需要使用字典中的键获取值,因为我得到了错误。这里的问题只是您使用了错误的键。如果您想知道密钥是什么,请仔细查看Credentials.FirstOrDefault().key。我不能告诉你它是什么没有一个最小的复制,但就个人而言,我怀疑

当我试图从字典键获取值时,它返回错误

我尝试了以下方法:

public Dictionary<string, string> Credentials { get; set; }
Approach1: Credentials["Password"]

我需要使用字典中的键获取值,因为我得到了错误。

这里的问题只是您使用了错误的键。如果您想知道密钥是什么,请仔细查看
Credentials.FirstOrDefault().key
。我不能告诉你它是什么没有一个最小的复制,但就个人而言,我怀疑这是一个尾随空白

尝试:

这里周围的引号的目的是让额外的空白变得明显。这并没有给出一个明显的答案:您需要查看实际的字符数据(
tocharray()
)-可能会有unicode骗局


但是,键不是
“0”
,当被视为可枚举项时,这只是索引。

问题所声称的不能重现。这是一个非常基本的特性,任何问题都会在2005年推出
字典时被注意到

var Credentials=new Dictionary<string,string>();
Credentials["User"]="2004";
Credentials["Password"]="201900";

Debug.Assert(Credentials["Password"]=="201900");
这将正确地抛出:

System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
因为字典里没有这样的键

也许有人试图通过索引读取字典项?在任何情况下,正确的呼叫应为:

var x=dict.ElementAt(0);
字典的索引器不能用于按索引访问项。事实上,字典没有任何有意义的顺序。从文件中:

出于枚举的目的,字典中的每个项都被视为表示值及其键的KeyValuePair结构。返回项目的顺序未定义


随着项目添加到索引中,顺序可能会更改。

您的错误使其看起来像是您正在执行
凭据[“0”]
而不是
凭据[“密码”]
?我正在执行凭据[“密码”],但根据屏幕截图,它应该是
凭据[“1”[“密码”]
凭据[“1”]
返回一个字典
{“Password”,201900}
从中我们通过
“Password”
键返回
201900
您发布的代码无效。无论您使用的是
var result=dict[Key],字典都可以正常工作
dict.TryGetValue(输入,输出var结果)。如果出现该异常,则表示密钥不存在。此外,错误非常明显-使用字符串
0
而不是
Password
作为密钥。Credentials.FirstOrDefault()。密钥返回正确的值,但当我尝试从该密钥获取值时,我做不到that@Mayank是的,你是——这就是你所说的“不管下面的代码如何按预期工作”——所以:我不认为关键是你所认为的关键。非常非常仔细地检查。是的,你是对的。键具有导致问题的额外空间。谢谢,我也创建了示例代码,对我来说它也在工作,我需要检查为什么我的application@Mayank因为正如其他人所解释的,使用了错误的键。或者您尝试将字典当作数组使用,并尝试传递
0
以获取第一项。是的,您是正确的。键具有导致问题的额外空间。非常感谢。
var x=Credentials["0"];
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
var x=dict.ElementAt(0);