如果web / app.config中不存在“ blah”,ConfigurationManager.AppSettings [“ blah”]是否会引发异常?
对于超级懒惰的问题致以诚挚的歉意。
NameValueCollection.Item
物业的文件...
如果web / app.config中不存在“ blah”,ConfigurationManager.AppSettings [“ blah”]是否会引发异常?
对于超级懒惰的问题致以诚挚的歉意。
NameValueCollection.Item
物业的文件...
Answers:
从MSDN文档的NameValueCollection.Item属性(字符串):
警告
在以下情况下,此属性返回null:1)如果找不到指定的键;2)如果找到了指定的键,并且其关联值为null。此属性无法区分这两种情况。
不,它返回null
。
AppSettings的是NameValueCollection中 -按照该谨慎的上NameValueCollection.Get页:
在以下情况下,此方法返回空引用(在Visual Basic中为Nothing):1)如果找不到指定的键;2)如果找到了指定的键,并且其关联的值为空引用(Visual Basic中为Nothing)。此方法无法区分这两种情况。
其他答案参考Item属性的文档。看起来下面的代码片段为何有意义,可能并不立刻明白。
ConfigurationManager.AppSettings["blah"]
方括号语法在C#中用于访问索引器。这些特殊属性允许类以与数组相同的方式进行索引。查看NameValueCollection.Item属性的定义,您会发现它不使用常规属性语法。this关键字和indexer参数用于将此属性定义为indexer。
public string this[
string name
] { get; set; }
在文档中,索引器隐式命名为Item,参数用方括号括起来。
我不清楚为什么会有一些引用Get的答案方法的 -也许一个调用另一个?
无论如何,要回答这个问题...
否。如果您访问不存在的密钥,则不会引发异常-将返回null。
这是NameValueCollection.Item属性文档中的相关部分。
在以下情况下,此属性返回null:1)如果找不到指定的键;2)如果找到了指定的键,并且其关联值为null。此属性无法区分这两种情况。
是 http://msdn.microsoft.com/zh-cn/library/system.configuration.configurationmanager.appsettings.aspx
编辑:这显然是错误的。留给下面的有用评论。
NameValueCollection
找不到,则会引发异常-即系统找不到任何设置。当您尝试检索不存在..单个值的名称值的集合不抛出的异常