如果“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,参数被方括号包围。
我不清楚为什么有引用Get方法的答案 – 也许有一个叫另一个?
无论如何,回答这个问题…
不。如果您访问不存在的密钥,则不会抛出exception – 将返回空值。
以下是NameValueCollection.Item属性文档中的相关部分。
在以下情况下,此属性返回null:1)如果找不到指定的键; 和2)如果find指定的键,并且其关联值为空。 这个属性并不区分这两种情况。