Tag: 字典

创建基于编译器的“字典”的非静态版本,其中键是类型

有一个非常简单的技巧,它创建了一个类似字典的结构,其中键是类型。 该结构的行为类似于Dictionary ,其中键是Type对象,值是相应类型的实例。 这个奇妙的结构和变量或数组一样快,因为“查找”只由编译器/ JITter执行一次,并且正确的值引用被编译到程序中。 public static class MyDict { public static T Value { get; set; } } 您可以像这样使用该结构: MyDict.Value = MyDict.Value.ToString(); 问题是这个“字典”是全球性的。 创建不同字典的唯一方法是创建不同的类。 如何创建一个类似的(最快的“查找”,没有拳击)非静态结构? (没有代码生成。) 简单地说:我希望有多个Dictionary类似的对象,没有查找成本,转换和装箱。

如何获取字典中的键的ReadOnlyCollection

我的类包含Dictionary dict ,我想公开键的ReadOnlyCollection 。 如何在不将Dictionary.KeyCollection dict.Keys到数组然后将数组作为ReadOnlyCollection公开的情况下执行此操作? 我希望ReadOnlyCollection是一个合适的包装器,即。 反映基础字典中的变化,据我所知,将集合复制到数组将不会这样做(以及看似效率低下 – 我实际上并不想要一个新的集合,只是为了公开底层的密钥集合.. )。 任何想法将不胜感激! 编辑:我正在使用C#2.0,因此没有.ToList(轻松)可用的扩展方法。

如何计算Dictionary中唯一值的出现次数?

我有一个字典,双精度值和字符串作为键。 我想计算这个字典中每个值的出现次数,我想知道这个值(例如重复)。 例如: key1, 2 key2, 2 key3, 3 key4, 2 key5, 5 key6, 5 我想得到一个清单: 2 – 3 (times) 3 – 1 (once) 5 – 2 (twice) 我该怎么做?

如何在ComboBox中使用Dictionary填充SelectedValue的值

我们有这样的字典: var dictionary = new Dictionary { { 0, 100 }, { 1, 202 }, { 2, 309 }, }; 等等很多价值观。 字典绑定到comboBox,如下所示: comboBox1.ItemsSource = dictionary; comboBox1.DisplayMemberPath = “Value”; 我想知道如果comboBox.Text仅适用于手动输入的值和此代码,我如何获得此comboBox的selectedvalue: string value = comboBox1.SelectedValue.ToString(); 返回值如[1,202],而我需要明确的int TValue“202”。 我无法找到类似的问题所以我在那里问它并希望答案可能对其他人有用。

NUnit嵌套集合比较

是否有类似于CollectionAssert.AreEquivalent()的东西适用于嵌套集合? 以下代码…… CollectionAssert.AreEquivalent ( new Dictionary<int, Dictionary> { { 1, new Dictionary { { 10, “foo” }, { 11, “bar” }, { 12, “spam” } } }, { 2, new Dictionary { { 20, “eggs” }, { 21, “eels” } } }, { 3, new Dictionary { { 30, “hovercraft” } } } }, new […]

Dictionary.ElementAt方法在某些类中可见,但在其他类中不可见

我有一个字典,其中我需要迭代并进行更改。 我不能使用foreach语句,因为它有时会抛出InvalidOperationException,说在收集期间无法修改集合。 我可以使用for循环,结合Dictionary.ElementAt方法,我成功地在其他类中使用它,但在这个特定的类中,无法找到方法ElementAt! 有任何想法吗?

为什么在从字典中读取时会锁定

我对正在阅读的书中的代码列表,Nutshell中的C#3以及线程感到困惑。 在关于应用程序服务器中的线程安全的主题中,下面的代码是作为UserCache的示例给出的: static class UserCache { static Dictionary _users = new Dictionary(); internal static User GetUser(int id) { User u = null; lock (_users) // Why lock this??? if (_users.TryGetValue(id, out u)) return u; u = RetrieveUser(id); //Method to retrieve from databse lock (_users) _users[id] = u; //Why lock this??? return u; } } 作者解释了为什么RetrieveUser方法没有锁定,这是为了避免长时间锁定缓存。 […]

c#如何定义包含不同类型的字典?

如果有以下代码。 你在哪里看到XXX我想放入long []类型的数组。 我该怎么做?如何从字典中获取值? 我只是使用defaultAmbience [“CountryId”] [0]来获取第一个元素吗? public static Dictionary defaultAmbience = new Dictionary { { “UserId”, “99999” }, { “CountryId”, XXX }, { “NameDefaultText”, “nametext” }, { “NameCulture”, “it-IT” }, { “NameText”, “namelangtext” }, { “DescriptionDefaultText”, “desctext” }, { “DescriptionCulture”, “it-IT” }, { “DescriptionText”, “desclangtext” }, { “CheckInUsed”, “” } };

C#通用字典TryGetValue找不到键

我有这个简单的例子: using System; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Dictionary data = new Dictionary(); data.Add(new MyKey(“1”, “A”), “value 1A”); data.Add(new MyKey(“2”, “A”), “value 2A”); data.Add(new MyKey(“1”, “Z”), “value 1Z”); data.Add(new MyKey(“3”, “A”), “value 3A”); string myValue; if (data.TryGetValue(new MyKey(“1”, “A”), out myValue)) Console.WriteLine(“I have found it: {0}”, myValue […]

如何制作字典扩展方法?

我正在尝试编写一个独立于Key / Value数据类型的Dictionary扩展。 我尝试使用object数据类型传递它,假设它适用于任何类型。 我的代码: public static class DictionaryExtensionsClass { public static void AddFormat(this Dictionary Dic, ??unknow type/*object*/ Key, string str, params object[] arglist) { Dic.Add(Key, String.Format(str, arglist)); } }