Tag: collections

整数数组作为键的字典

我需要一个Dictionary,其键是一个整数数组,例如Dictionary或 Dictionary<List,string>. 但我很惊讶Equality方法和哈希码方法没有为我定义。 除了创建我自己的MyType: List并定义所有必要的方法之外,有没有简单的方法来实现这样的结构?

使字典只能在C#中读取

我有一个Dictionary<string, List>并希望将该成员公开为只读。 我看到我可以将它作为IReadOnlyDictionary<string, List> ,但我无法弄清楚如何将其作为IReadOnlyDictionary<string, IReadOnlyList> 。 有没有办法做到这一点? 在c ++中,我只是使用const,但C#没有。 请注意,在这种情况下,简单地使用IReadOnlyDictionary没有帮助,因为我希望只读取值。 看来唯一的方法是构建另一个IReadOnlyDictionary,并向它们添加IReadOnlyList。 另一个我不会兴奋的选择是创建实现接口IReadOnlyDictionary>的包装器,并让它保存原始实例的副本,但这似乎有点过分。

使用.Net中的Dictionary 进行线程安全

我有这个function: static Dictionary KeyValueDictionary = new Dictionary(); static void IncreaseValue(int keyId, int adjustment) { if (!KeyValueDictionary.ContainsKey(keyId)) { KeyValueDictionary.Add(keyId, 0); } KeyValueDictionary[keyId] += adjustment; } 我原本认为这不是线程安全的。 但是,到目前为止,在测试它时,我没有看到同时从多个线程调用它时的任何exception。 我的问题:它是线程安全还是我到目前为止幸运? 如果它是线程安全的那么为什么?

WCF OperationContract – 我应该公开哪种通用集合类型?

我有一个WCF Web服务,它有一个返回generics集合的方法。 现在,我的问题是:我应该将它暴露为ICollection , List , IList , IEnumerable还是其他什么? 我想List是不可能的 ,因为我想避免CA1002错误 ,但底层类型将是List 。 我真的很想听听你对此的看法,最好能够很好地解释你为何如何思考自己的想法。 提前致谢

在IEnumerable上使用Observable Collection的优点和缺点

我试图决定是否要将所有IEnumerable集合切换到Observable Collections。 我找不到对此的好解释。 可理解的术语中Observable Collection的优点和缺点是什么?

在字典中查找重复值并打印重复元素的键

什么是检查字典中的重复值并打印其密钥的最快方法? 具有以下值的字典MyDict , 关键价值 22 100 24 200 25 100 26 300 29 200 39 400 41 500 示例:键22和25具有相同的值,我需要打印22和25具有重复值。

inheritanceList 来实现集合是个坏主意吗?

我曾经读过Imaar Spaanjars关于如何构建3层应用程序的文章。 ( http://imar.spaanjaars.com/416/building-layered-web-applications-with-microsoft-aspnet-20-part-1 )这已成为我编码的基础。 因此,我通过inheritanceList实现集合。 因此,如果我有一个名为Employee的类,要实现一个集合,我还将有一个Employees类,如下所示。 class Employee { int EmpID {get;set;} string EmpName {get;set;} } class Employees : List { public Employees(){} } 我从未真正质疑这一点,因为它为我做了工作。 但是现在我开始尝试一些事情,我不确定这是否是正确的方法。 例如,如果我想从Employees获得一个子集,例如 Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now); 这会抛出System.InvalidCastException。 但是,如果我使用以下内容,则没有问题。 List newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now); 那么如何实现Employees以便我不必在DAL或BLL中明确使用List ? 或者我怎样摆脱InvalidCastexception?

最佳实践:如何公开只读ICollection

我在我的class级中有一个名为foos的ICollection ,我希望将其公开为只读(请参阅此问题 )。 我看到界面定义了一个属性.IsReadOnly ,这似乎是合适的……我的问题是:如何让类消费者明白foos是只读的? 在尝试使用未实现的方法(如.Add()之前,我不想依赖它们记住查询.IsReadOnly 。 理想情况下,我想将foos暴露为ReadOnlyCollection ,但它没有实现IList 。 我应该通过一个名为GetReadOnlyFooCollection而不是通过属性来暴露foo吗? 如果是这样,这不会混淆那些期望ReadOnlyCollection吗? 这是C#2.0,所以像ToList()这样的扩展方法不可用……

C#中是否存在非唯一键排序列表generics集合?

我对System.Collections.Generic.SortedList感到有些惊讶 它需要我使用而不是 (比较器) 它只允许按值输入 这些在我想要使用它的方式上显得古怪(尽管我确信它们适合其他情况)。 还有另一个没有这两个特征的集合吗?

C# – 获取通用列表的项类型

获取通用列表包含的项类型的最佳方法是什么? 抓取集合中的第一个项目并调用.GetType()很容易,但我不能总是确定集合中会有一个项目。 希望有道理。 谢谢, 桑尼