141

将配置管理器。如果web/app.config中不存在“blah”,AppSettings[“blash”]会引发异常?

0

7个答案7

重置为默认值
143

不,它会返回无效的.

0
26

NameValueCollection的MSDN文档。项目属性(字符串):

注意安全

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

8

不,它会返回无效的.

AppSettings是一个名称值集合-根据谨慎名称值集合。获取页码:

此方法返回空引用(Visual Basic中没有任何内容)以下情况:1)如果指定找不到密钥;和2)如果找到指定的键,并且其关联的值是空引用(Visual Basic中没有任何内容)。这种方法无法区分这两者案例。

6

不,它会返回无效的.

ConfigurationManager(配置管理器)。应用程序设置是一个名称值集合-来自MSDN文档:

Get方法不区分之间返回null,因为找不到指定的密钥返回null,因为与键关联的值为null。

(我的重点)

4

其他答案参考Item属性的文档。看看下面的代码片段,可能无法立即看出它们为什么相关。

ConfigurationManager(配置管理器)。应用程序设置[“blah”]

C#中使用方括号语法访问索引器。这些特殊属性允许以与数组相同的方式对类进行索引NameValueCollection。项目属性,您会注意到它没有使用正常的属性语法。this关键字和索引器参数用于将此属性定义为索引器。

公共字符串this[字符串名称]{获取;设置;}

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

MSDN文档中显示的索引器。

我不清楚为什么有答案引用了获取方法-也许一个调用另一个?

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

不可以。如果访问不存在的密钥,则不会引发异常-将返回null。

以下是来自NameValueCollection。项目属性文档。

在以下情况下,此属性返回null:1)如果指定找不到密钥;和2)如果找到指定的密钥关联的值为null。此属性不区分这两个案例。

1

正如Tim所说,它只会返回null。

但是,如果您希望它在找不到异常时抛出异常,可以这样做:

var myImportantSetting=配置管理器。应用程序设置[“important_setting”]??throw new SettingsPropertyNotFoundException(“AppSetting missing.”);
-2

是的http://msdn.microsoft.com/en-us/library/system.configration.configurationmanager.appsettings.aspx

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

2
  • 1
    你的问题的答案是“不”,就像提姆提到的那样。指向的页面刚刚指出,如果无法加载appsettings,则会引发异常。但如果appsettings中不存在值,则不会出现异常。仅仅因为字典中不存在值就抛出错误是没有意义的。但如果字典不存在,那么这就是抛出错误的原因。(术语dictionary仅用于指代任意集合。)
    – 旋量子
    评论 2010年7月6日14:51
  • 该链接表示如果名称值集合找不到-即系统找不到任何设置。当您尝试检索不存在的单个值时,名称值集合不会引发异常。。 评论 2010年7月6日14:51

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.