C# 单条词典

C# 单条词典,c#,dictionary,C#,Dictionary,如果DictionarymyDictionary恰好包含单个项,那么检索value对象的最佳方法是什么(如果我不关心键) 谢谢如果有多个对象,您是否希望它失败取决于您是否可以使用 myDictionary.Value.Single();//Will fail if there's more than one 或 我永远不会为假设只有一个而编码。如果你知道总会有一个,那为什么要用字典呢?我想你可以用迭代器 myDictionary.GetEnumerator().Current 您无法直接或通

如果
Dictionary
myDictionary
恰好包含单个项,那么检索value对象的最佳方法是什么(如果我不关心键)


谢谢

如果有多个对象,您是否希望它失败取决于您是否可以使用

myDictionary.Value.Single();//Will fail if there's more than one


我永远不会为假设只有一个而编码。如果你知道总会有一个,那为什么要用字典呢?

我想你可以用迭代器


myDictionary.GetEnumerator().Current

您无法直接或通过索引获取值,您必须知道键:

object obj = yourDictionary[theKeyThatYouHappenToKnow];
或使用枚举器:

var en = yourDictionary.GetEnumerator();
en.MoveNext();
object obj = en.Current.Value;
en.Dispose();

如果您使用的是framework 3.5,还可以使用一些扩展方法,如
Single
First
,来为您使用枚举器。

。FirstOrDefault()是最安全的,因为如果没有,它将返回null,并且可以安全地检查null。@Cylon:但是,无法确定它是否为空,因为项的值为空或没有项。@Gaffa,如果重要,可以通过检查字典中的键数来进行区分。另一方面,我认为创建一个具有相应空值的密钥是一个错误。@ Cyon如果没有对象是一个特殊的情况,它应该被视为这样,而不是作为空引用被掩蔽。如果不测试null是不安全的,那么返回null,如果要测试null,那么最好让代码显示没有对象是异常情况,然后处理潜在的错误exception@Rune,“null”有一个非常具体的含义:这里可能有一个值,但我们不知道它是什么。这与“异常条件”完全不同,它应该只是作为异常抛出。枚举器在第一项之前启动,您必须调用MoveNext才能前进到第一项。我很好奇为什么您需要这个……我带着这种想法来寻找在这种情况下该怎么办。不幸的是,我的情况是在web API中返回一个键和值。例如,在JSON中,字典将键和值关联在一起,而KeyValuePair将键与“键”关联,将值与“值”关联,而不是相互关联,这一点我发现并不理想。你有没有可能扩展你在这个答案中暗示的想法?向混合中添加JSON确实会改变事情;您需要在服务器端对客户端的期望进行建模。所以在这种情况下,字典是有效的。
myDictionary.Value.First();//Will just return the first regardless of the count
object obj = yourDictionary[theKeyThatYouHappenToKnow];
var en = yourDictionary.GetEnumerator();
en.MoveNext();
object obj = en.Current.Value;
en.Dispose();