如果web/app.config中不存在“blah”,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?如果“blah”不存在,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?
真诚为超级懒惰的问题表示歉意。
如果web/app.config中不存在“blah”,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?如果“blah”不存在,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?
真诚为超级懒惰的问题表示歉意。
不,它返回null
。
+1因为这就是我想要的 – 2013-05-23 23:46:42
从MSDN documentation for NameValueCollection.Item Property (String):
注意
这个属性返回在下列情况下无效:1)如果指定键没有找到; 2)如果找到指定的键并且其关联值为空。该属性不区分这两种情况。
不,它返回null
。
ConfigurationManager.AppSettings
是NameValueCollection
- 从the MSDN documentation:
GET方法不区分 因为 指定的关键是没有找到它,因为 返回值和 空被返回之间空与关键字相关联的是null。
(我的重点)
不,它返回null
。
的AppSettings是一个NameValueCollection - 在NameValueCollection.Get页面上按了caution:
这种方法在 下列情况下返回空引用 (在Visual Basic中为Nothing):1)如果指定的 关键没有找到; 2)如果找到 指定密钥并且其 关联值为空引用 (在Visual Basic中为Nothing)。此方法 不区分两个 个案。
其他答案引用Item属性的文档。它可能不会立即明白为什么他们是相关的看下面的代码片段。
ConfigurationManager.AppSettings["blah"]
在C#中使用方括号语法来访问索引器。这些是特殊的属性,可以使用与数组相同的方式对类进行索引。查看NameValueCollection.Item属性的定义,您会注意到它不使用常规属性语法。此关键字和索引器参数用于将此属性定义为索引器。
public string this[
string name
] { get; set; }
在文档中,索引器隐式命名为Item,参数用方括号括起来。
这是我不明白为什么有则引用Get方法答案 - 也许一个调用其他?一个将返回null -
无论如何,要回答这个问题......
号,如果你访问一个不存在的键的异常不会被抛出。
以下是NameValueCollection.Item财产文档的相关部分。
该属性在下列情况下返回null:1)如果未找到指定的 键; 2)如果找到指定的密钥并且其关联值为空。该属性不区分 这两种情况。
-1:既然你已经意识到这是一个懒惰的问题,实际上并不仅仅是试图将它放在* less *工作而不是在这里发布这个问题? – 2010-07-06 14:47:08
或者查看['NameValueCollection.Item'](http://msdn.microsoft.com/en-us/library/8d0bzeeb.aspx)属性的文档... – 2010-07-06 14:49:16
谢谢那些回答。我会尽量不要养成像这样的问题。 – Ben 2010-07-06 17:22:32