fra*_*lic 92 .net c# collections dictionary namevaluecollection
我应该使用Dictionary <string,string>而不是NameValueCollection的任何原因?
(在C#/ .NET Framework中)
选项1,使用NameValueCollection:
//enter values:
NameValueCollection nvc = new NameValueCollection()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
// retrieve values:
foreach(string key in nvc.AllKeys)
{
string value = nvc[key];
// do something
}
Run Code Online (Sandbox Code Playgroud)
选项2,使用Dictionary <string,string> ...
//enter values:
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"key1", "value1"},
{"key2", "value2"},
{"key3", "value3"}
};
// retrieve values:
foreach (KeyValuePair<string, string> kvp in dict)
{
string key = kvp.Key;
string val = kvp.Value;
// do something
}
Run Code Online (Sandbox Code Playgroud)
对于这些用例,使用一个与另一个是否有任何优势?性能,内存使用,排序顺序等方面的差异?
Kel*_*tex 121
它们在语义上不相同.在NameValueCollection可以同时复制钥匙Dictionary不能.
就个人而言,如果你没有重复的密钥,那么我会坚持使用Dictionary.它更现代,用途IEnumerable<>更容易与Linq查询混合.您甚至可以Dictionary使用该Linq ToDictionary()方法创建一个.
cod*_*ife 10
字典会快得多.NameValueCollection允许重复键.这在某些情况下可能是坏的,或在其他情况下是期望的.字典不允许重复键.
来自:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
Dictionary <(Of <(TKey,TValue>)>)泛型类提供从一组键到一组值的映射.字典的每个添加都包含一个值及其关联的键.通过使用其键来检索值非常快,接近于O(1),因为Dictionary <(Of <(TKey,TValue>)>)类被实现为哈希表.
| 归档时间: |
|
| 查看次数: |
88422 次 |
| 最近记录: |