如果“blah”不存在,ConfigurationManager.AppSettings 会抛出exception吗?

如果web / app.config中不存在“blah”,ConfigurationManager.AppSettings [“blah”]会抛出exception吗?

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

不,它返回null

从NameValueCollection.Item属性(string)的MSDN文档 :

警告

在以下情况下,此属性返回null:1)如果找不到指定的键; 和2)如果find指定的键,并且其关联值为空。 这个属性并不区分这两种情况。

不,它返回null

ConfigurationManager.AppSettings是一个NameValueCollection – 来自MSDN文档 :

Get方法不区分由于找不到指定键而返回的null和由于与键关联的值为null而返回的null。

(我的重点)

不,它返回null

AppSettings是一个NameValueCollection – 根据NameValueCollection.Get页面的注意事项 :

在下列情况下,此方法返回空引用(在Visual Basic中为Nothing):1)如果未find指定的键; 和2)如果find指定的键,并且其关联值是空引用(在Visual Basic中为Nothing)。 这种方法不区分这两种情况。

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

 ConfigurationManager.AppSettings["blah"] 

C#中使用方括号语法来访问索引器。 这些是特殊的属性,允许一个类以一个数组相同的方式进行索引。 查看NameValueCollection.Item属性的定义,您会注意到它不使用正常的属性语法。 这个关键字和索引器参数被用来定义这个属性作为一个索引器。

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

在文档中,索引器被隐式命名为Item,参数被方括号包围。

索引器如MSDN文档中所示。

我不清楚为什么有引用Get方法的答案 – 也许有一个叫另一个?

无论如何,回答这个问题…

不。如果您访问不存在的密钥,则不会抛出exception – 将返回空值。

以下是NameValueCollection.Item属性文档中的相关部分。

在以下情况下,此属性返回null:1)如果找不到指定的键; 和2)如果find指定的键,并且其关联值为空。 这个属性并不区分这两种情况。

http://msdn.microsoft.com/zh-CN/library/system.configuration.configurationmanager.appsettings.aspx

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