Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net自定义资源提供程序是否使用Dictionary/SortedList/SortedDictionary?_C#_Asp.net_Collections - Fatal编程技术网

C# asp.net自定义资源提供程序是否使用Dictionary/SortedList/SortedDictionary?

C# asp.net自定义资源提供程序是否使用Dictionary/SortedList/SortedDictionary?,c#,asp.net,collections,C#,Asp.net,Collections,这个问题可能以不同的形式提出,但对于我目前的要求,有人能建议哪一个是最好的吗 在ASP.Net中,我有自己的本地和全局资源实现,我将键值对存储在静态字典对象中,总共可能最多有10000个值(所有页面)。当asp.net应用程序加载页面时,它会将值存储在静态字典对象中。当再次访问页面而不是从资源文件中读取值时,将从静态字典对象提供服务 我的问题是出于性能原因,字典是最好的,还是我应该使用SortedList/SortedDictionary排序会增加开销,因此如果不需要排序,您只需根据键从字典中查

这个问题可能以不同的形式提出,但对于我目前的要求,有人能建议哪一个是最好的吗

在ASP.Net中,我有自己的本地和全局资源实现,我将键值对存储在静态字典对象中,总共可能最多有10000个值(所有页面)。当asp.net应用程序加载页面时,它会将值存储在静态字典对象中。当再次访问页面而不是从资源文件中读取值时,将从静态字典对象提供服务


我的问题是出于性能原因,字典是最好的,还是我应该使用SortedList/SortedDictionary

排序会增加开销,因此如果不需要排序,您只需根据键从字典中查找一页,那么我会坚持使用字典

从您的场景中,我假设查找速度是最重要的关注点

SortedDictionary使用红黑树,这是一种二叉树,每当添加/删除一个项目时,它都会使集合保持有序。因此,如果要查找值的范围,其中集合中一个项相对于另一个项的位置很重要,那么SortedDictionary就有意义了。如果您可能需要使用索引(如数组)而不是键来访问集合,SortedList是有意义的

字典使用一个哈希表来散列和存储键,它用于查找,所以它使得查找一个随机的单个项非常快。这与您的场景相匹配

SortedDictionary按O(log n)的顺序进行添加/查找,其中Dictionary按O(1)的顺序进行添加/查找


请参阅。

为什么需要排序?如果您总是通过键访问这些值,则不会有任何优势,但性能会降低,因为SortedList必须在创建、插入和删除时对所有索引重新排序。唯一的优点是,您可以通过键或索引访问它,并且当您枚举DictionaryEntries时,您可以按键获得正确的排序顺序。我不需要排序,我的想法是,如果在获取单个值时按排序顺序存储记录,则速度会更快。我不确定它在内部使用的算法,它在字典类型中存储在哪里并不重要。它们可以通过钥匙直接访问,就像地址一样。继续查字典。如果你想了解更多关于算法的信息,请看一看。排序是在添加/插入/删除时完成的,但后备存储是一种不同的机制,适用于不同的操作。我会详细更新我的答案。