edi-dictionary-viewer
全部标签 Dictionary的[string]索引器在字典中不存在键时返回什么?我是C#的新手,我似乎找不到与Javadocs一样好的引用。我得到的是null,还是异常? 最佳答案 如果您指的是Dictionary的索引器,那么您应该会看到一个异常(KeyNotFoundException)。如果你不希望它出错:SomeTypevalue;if(dict.TryGetValue(key,outvalue)){//keyexisted;valueisset}else{//keynotfound;valueisdefault(SomeType)
我想声明一个字典,用于存储特定类型的类型化IEnumerable,并将该类型作为键,如下所示:(根据johnyg的评论进行编辑)privateIDictionary>_dataOfTypewhereT:BaseClass;//doesnotcompile!我要存储的具体类都是从BaseClass派生的,因此想用它作为约束。编译器提示它希望在成员名称后有一个分号。如果可行,我希望这将使以后从字典中检索变得简单,如下所示:IEnumerableconcreteData;_sitesOfType.TryGetValue(typeof(ConcreteType),outconcreteData
我想声明一个字典,用于存储特定类型的类型化IEnumerable,并将该类型作为键,如下所示:(根据johnyg的评论进行编辑)privateIDictionary>_dataOfTypewhereT:BaseClass;//doesnotcompile!我要存储的具体类都是从BaseClass派生的,因此想用它作为约束。编译器提示它希望在成员名称后有一个分号。如果可行,我希望这将使以后从字典中检索变得简单,如下所示:IEnumerableconcreteData;_sitesOfType.TryGetValue(typeof(ConcreteType),outconcreteData
我想创建一个类似字典的对象,并认为正确的方法是实现IDictionary接口(interface),并使用组合来包含底层字典。我从下面开始(K=string,V=int)publicclassDictionaryLikeObject:IDictionary{Dictionary_backingDictionary=newDictionary();}然后我使用VisualStudio的“实现接口(interface)”功能来去除我需要的所有覆盖方法。IDictionary的三种方法Dictionary中似乎不存在:voidAdd(KeyValuePairitem);voidCopyTo(
我想创建一个类似字典的对象,并认为正确的方法是实现IDictionary接口(interface),并使用组合来包含底层字典。我从下面开始(K=string,V=int)publicclassDictionaryLikeObject:IDictionary{Dictionary_backingDictionary=newDictionary();}然后我使用VisualStudio的“实现接口(interface)”功能来去除我需要的所有覆盖方法。IDictionary的三种方法Dictionary中似乎不存在:voidAdd(KeyValuePairitem);voidCopyTo(
我有System.Collections.Generic.Dictionarydict其中A和B是类,实例Aa(其中dict.ContainsKey(a)为真)。是否可以得到包含a的KeyValuePair?直接来自字典?或者我是否需要创建一个新的KeyValuePair:newKeyValuePair(a,dict[a])? 最佳答案 您需要创建一个新的KeyValuePair1-但请记住,KVP无论如何都是一种值类型(一种结构),因此您不会通过这样做引入新的低效率。任何返回KVP的方法都会创建一个副本——您只是直接创建实例。如果
我有System.Collections.Generic.Dictionarydict其中A和B是类,实例Aa(其中dict.ContainsKey(a)为真)。是否可以得到包含a的KeyValuePair?直接来自字典?或者我是否需要创建一个新的KeyValuePair:newKeyValuePair(a,dict[a])? 最佳答案 您需要创建一个新的KeyValuePair1-但请记住,KVP无论如何都是一种值类型(一种结构),因此您不会通过这样做引入新的低效率。任何返回KVP的方法都会创建一个副本——您只是直接创建实例。如果
如何将动态对象转换为Dictionary在C#中我能做什么?publicstaticvoidMyMethod(objectobj){if(typeof(IDictionary).IsAssignableFrom(obj.GetType())){//Myobjectisadictionary,castingtheobject://(Dictionary)obj;//causeserror...}else{//Myobjectisnotadictionary}} 最佳答案 上面的答案都很酷。我发现用json序列化对象并反序列化为字典很容
如何将动态对象转换为Dictionary在C#中我能做什么?publicstaticvoidMyMethod(objectobj){if(typeof(IDictionary).IsAssignableFrom(obj.GetType())){//Myobjectisadictionary,castingtheobject://(Dictionary)obj;//causeserror...}else{//Myobjectisnotadictionary}} 最佳答案 上面的答案都很酷。我发现用json序列化对象并反序列化为字典很容
我正在使用System.Collections.Generic.Dictionary.我想从这个字典中返回第一个键。我试过dic.Keys[0]但我在Keys上唯一拥有的东西属性(一个KeyCollection对象)是一个枚举器。我是否必须枚举所有键才能获得第一个? 最佳答案 假设您使用的是.NET3.5:dic.Keys.First();请注意,键/值对在字典中的迭代顺序没有保证。您可能会发现,在很多的情况下,您会得到您放入字典中的第一个关键字-但您绝对绝不能依赖它。正如Skirwan所说,实际上并没有“第一”的概念。从本质上讲,