2010-07-06 44 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)如果找到指定的密鑰並且其關聯值爲空。該屬性不區分 這兩種情況。

相關問題