- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 .NET 中,我们可以使用 <configSections>
创建自定义配置部分元素,像这样:
<configuration>
<configSections>
<section name="dictionarySample"
type="System.Configuration.DictionarySectionHandler"/>
<section name="nameValueSample"
type="System.Configuration.NameValueSectionHandler" />
</configSections>
<dictionarySample>
<add key="key1"
value="value1"/>
</dictionarySample>
<nameValueSample>
<add key="key2"
value="value2" />
</nameValueSample>
</configuration>
在上面,我定义了两个部分。类型之一 DictionarySectionHandler
, 和另一个类型 NameValueSectionHandler
.
据我所知,这两个处理程序的使用方式完全相同,并导致相同的配置部分。
那么,它们有区别吗,或者我可以互换使用它们吗?
最佳答案
TL;DR NameValueSectionHandler
在简单情况下适用于 string
->string
对,但如果您需要您的配置高效(特别是如果您要重复使用 remove
),请使用 DictionarySectionHandler
。
我深入研究了这两个类( NameValue 、 Dictionary )的源代码,发现实现上的差异很小。
不过有两点值得注意:
DictionarySectionHandler
将其键/值对存储在 Hashtable
中。 ,而 NameValueSectionHandler
使用 NameValueCollection
.DictionarySectionHandler
中,value
不是必需的,如果未提供则默认为空字符串,但 NameValueSectionHandler
需要值
。就Hashtable
和NameValueCollection
的区别而言,NameValueCollection
可以有重复键,而Hashtable
不能.此外,Hashtable
的实现效率要高得多。
This article on the MSDN Blog有一些关于 Hashtable
和 NameValueCollection
的有用信息。
总结他们的发现,Hashtable
是......
他们用一些关于何时使用 NameValueCollection
的有用信息来总结文章:
So you may be wondering when you’d want to use NameValueCollection. NameValueCollection only accepts keys and values that are Strings, so this is a very specialized collection. It’s useful in a situation in which you either need to associate multiple values with a key, or to do hash-based lookups as well as lookup by index (and hopefully not perform too many removes).
However, if you need to store string key/value pairs and you don’t need to perform index-based lookups or associate multiple values with a key, you may prefer to use the generic Dictionary class. This has the same asymptotic behavior as Hashtable in all cases and furthermore avoids any costs due to boxing.
关于c# - DictionarySectionHandler 和 NameValueSectionHandler 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26281974/
在 .NET 中,我们可以使用 创建自定义配置部分元素,像这样: 在上面,我定义了两个部分。类型之一 Dictiona
我正在使用 C#、Framework 3.5 (VS 2008)。 我正在使用 ConfigurationManager 将配置(不是默认的 app.config 文件)加载到配置对象中。 使用 Co
我是一名优秀的程序员,十分优秀!