bas*_*_79 13 c# string generics collections dictionary
这是一个我总是经常回来的问题:
什么是最好的<string, string>集合使用,对于一些xyz情况(最常见的是绑定到a DropDownList)?
有人为此准备了备忘单吗?各种选项之间的区别的完整列表?
如果您绑定到下拉列表,则可能会考虑排序顺序,并且集合的大小(最有可能并且在大多数用例中)足够小以避免性能问题.在这些情况下,a List<KeyValuePair<string, string>>是一个非常简单的选择,尽管BindingList可能更适合绑定,尤其是在WPF中.
Tuple<string, string>KeyValuePair甚至可以取代.
此外,非通用(非强类型)集合通常会给拳击带来一些最差的性能(除了难以处理之外),如果您担心列表开销,可以在创建时指定最大大小最小化.泛型类的另一个优点是它们可以实现IEnumerable与Linq一起使用,根据我的经验,它往往被更广泛地使用并且更好地为同事所知.一般来说,应该有一种明显的方式来用语言做某事,而.Net社区已经选择Dictionary<string, string>了StringDictionary.
您还可以添加扩展方法以使基本列表更方便:
public static class ListKeyValuePairExtensions
{
public static void Add<S, T>(this List<KeyValuePair<S, T>> list, S key, T value)
{
list.Add(new KeyValuePair<S, T>(key, value));
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如Porges所指出的那样,在这个问题所解决的案例中,非通用结构的性能影响并非来自装箱和拆箱,但仍有性能损失,请参阅本文以获得快速基准测试.
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |