2010-07-06 122 views
85

如果web/app.config中不存在“blah”,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?如果“blah”不存在,ConfigurationManager.AppSettings [“blah”]是否会抛出异常?

真诚为超级懒惰的问题表示歉意。

+5

-1:既然你已经意识到这是一个懒惰的问题,实际上并不仅仅是试图将它放在* less *工作而不是在这里发布这个问题? – 2010-07-06 14:47:08

+0

或者查看['NameValueCollection.Item'](http://msdn.microsoft.com/en-us/library/8d0bzeeb.aspx)属性的文档... – 2010-07-06 14:49:16

+2

谢谢那些回答。我会尽量不要养成像这样的问题。 – Ben 2010-07-06 17:22:32

回答

95

不,它返回null

+12

+1因为这就是我想要的 – 2013-05-23 23:46:42

-2

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx

编辑:这显然是错误的。留下以下有用的评论。

+1

您的问题的答案是不像@Tim提到的。指向的页面只是说,如果appsettings无法加载,则会引发异常。但是如果一个值只是在appsettings中不存在,那么你将不会得到一个异常。仅仅因为字典中不存在值而抛出错误确实没有意义。但是如果字典不存在,那么这将是抛出错误的原因。 (术语字典仅用于指代任意集合。) – spinon 2010-07-06 14:51:03

+0

该链接表示如果无法找到NameValueCollection,则系统无法找到任何*设置,则引发异常。名称值集合在您尝试检索不存在的单个值时不会引发异常.. – Dexter 2010-07-06 14:51:12

4

不,它返回null

ConfigurationManager.AppSettingsNameValueCollection - 从the MSDN documentation

GET方法不区分 因为 指定的关键是没有找到它,因为 返回值和 空被返回之间空与关键字相关联的是null。

(我的重点)

4

不,它返回null

的AppSettings是一个NameValueCollection - 在NameValueCollection.Get页面上按了caution

这种方法在 下列情况下返回空引用 (在Visual Basic中为Nothing):1)如果指定的 关键没有找到; 2)如果找到 指定密钥并且其 关联值为空引用 (在Visual Basic中为Nothing)。此方法 不区分两个 个案。

1

其他答案引用Item属性的文档。它可能不会立即明白为什么他们是相关的看下面的代码片段。

ConfigurationManager.AppSettings["blah"] 

在C#中使用方括号语法来访问索引器。这些是特殊的属性,可以使用与数组相同的方式对类进行索引。查看NameValueCollection.Item属性的定义,您会注意到它不使用常规属性语法。此关键字和索引器参数用于将此属性定义为索引器。

public string this[ 
    string name 
] { get; set; } 

在文档中,索引器隐式命名为Item,参数用方括号括起来。

Indexers as shown in the MSDN documentation.

这是我不明白为什么有则引用Get方法答案 - 也许一个调用其他?一个将返回null -

无论如何,要回答这个问题......

号,如果你访问一个不存在的键的异常不会被抛出。

以下是NameValueCollection.Item财产文档的相关部分。

该属性在下列情况下返回null:1)如果未找到指定的 键; 2)如果找到指定的密钥并且其关联值为空。该属性不区分 这两种情况。

相关问题