Tag: 词典

如何在C#中将字典初始化为(键,值,值)对

我想将值存储为键,值,值对。 我的数据类型 Key -> int & both values -> ulong, 如何初始化和获取此类字典的值。 我正在使用VS-2005。 如果我使用类或结构,那么我如何获取值。

C#无法让我的字典在XML中序列化

我正在开发一个小项目来学习如何在C#.NET中序列化对象我创建了以下类,这是我尝试序列化的类: public class Object { private Dictionary dictionaryStringInt; public Object() { this.dictionaryStringInt = new Dictionary(); } public void AddToDictionary(string s, int i) { this.dictionaryStringInt.Add(s, i); } public List DictionaryStringInt { get { List list = new List(); foreach (KeyValuePair element in dictionaryStringInt) { list.Add(new DictionaryEntry(element.Key, element.Value)); } return list; } set { Dictionary dictionary = […]

在Dictionary中使用IEqualityComparer与HashCode和Equals()的效率

我认为标题非常清楚。 我想知道在Dictionary使用IEqualityComparer时是否存在一定的效率开销?提供一个时它是如何工作的? 谢谢

计算Array中的出现次数

我正在计算数组中每个元素的出现但我得到错误“值不能为空”这对我没有意义,因为arr1完全填充没有空值,除了最后5个为null的元素。 这是我的代码。 我是第一次使用字典,所以我可能在某处出现一些逻辑错误。 我正在阅读文本文件。 string[] arr1 = new string[200]; StreamReader sr = new StreamReader(“newWorkSheet.txt”); string Templine1 = “”; int counter = 0; while (Templine1 != null) { Templine1 = sr.ReadLine(); arr1[counter] = Templine1; counter += 1; } sr.Close(); // Dictionary, key is number from the list and the associated value is the number of times […]

获取字典中的最后一个元素?

我的字典: Dictionary dic = new Dictionary(); 如何返回字典中的最后一个元素?

如何解决IReadOnlyDictionary缺乏协方差?

我正在尝试公开一个只读字典,该字典包含具有只读接口的对象。 在内部,字典是可写的,其中的对象也是可写的(参见下面的示例代码)。 我的问题是IReadOnlyDictionary不支持协变转换,因为这里的问题概述了原因。 这意味着我不能将我的内部字典公开为只读字典。 所以我的问题是,有没有一种有效的方法将我的内部字典转换为IReadOnlyDictionary,或者其他一些方法来处理它? 我能想到的选择是: 保留两个内部词典并使它们保持同步。 访问属性并在其中转换所有对象时创建新字典。 在内部使用它时,将IReadOnly转回NotReadOnly。 1看起来像是一种痛苦,2似乎非常低效。 3听起来像目前最有希望,但仍然是丑陋的。 我还有其他选择吗? public class ExposesReadOnly { private Dictionary InternalDict { get; set; } public IReadOnlyDictionary PublicList { get { // This doesn’t work… return this.InternalDict; } } // This class can be modified internally, but I don’t want // to expose this functionality. private class […]

.NET Dictionary:获取或创建新的

我经常发现自己创建了一个带有非平凡值类(例如List )的Dictionary ,然后在填写数据时总是编写相同的代码模式。 例如: var dict = new Dictionary<string, List>(); string key = “foo”; string aValueForKey = “bar”; 也就是说,我想在与”foo”键对应的列表中插入”bar” ,其中键”foo”可能不会映射到任何内容。 这是我使用不断重复的模式的地方: List keyValues; if (!dict.TryGetValue(key, out keyValues)) dict.Add(key, keyValues = new List()); keyValues.Add(aValueForKey); 这样做有更优雅的方式吗? 相关问题没有这个问题的答案: 是否有一个IDictionary实现,在缺少键而不是抛出时返回null? 在c#字典中只查找或插入一个查找 如果密钥不存在,则字典返回默认值

枚举和表现

我的应用程序有很多不同的查找值,这些值永远不会改变,例如美国各州。 我想使用枚举,而不是将它们放入数据库表中。 但是,我确实意识到这样做需要一些枚举和大量的“int”和“string”来自我的枚举。 另外,我看到有人提到使用Dictionary 作为查找表,但枚举实现似乎更清晰。 所以,我想问一下,保留和传递很多枚举并将它们转化为性能问题,还是应该使用查找表方法,哪个表现更好? 编辑:需要转换为ID以存储在其他数据库表中。

测试对象是否是C#中的字典

有没有办法测试对象是否是字典? 在一个方法中,我试图从列表框中的选定项目中获取值。 在某些情况下,列表框可​​能绑定到字典,但在编译时不知道。 我想做类似的事情: if (listBox.ItemsSource is Dictionary) { KeyValuePair pair = (KeyValuePair)listBox.SelectedItem; object value = pair.Value; } 有没有办法在运行时使用reflection动态地执行此操作? 我知道可以使用generics类型的reflection并确定键/值参数,但我不确定在检索这些值之后是否有办法完成其余的操作。