如果web/app.config中不存在「blah」,ConfigurationManager.AppSettings [「blah」]是否會拋出異常?如果「blah」不存在,ConfigurationManager.AppSettings [「blah」]是否會拋出異常?
真誠爲超級懶惰的問題表示歉意。
如果web/app.config中不存在「blah」,ConfigurationManager.AppSettings [「blah」]是否會拋出異常?如果「blah」不存在,ConfigurationManager.AppSettings [「blah」]是否會拋出異常?
真誠爲超級懶惰的問題表示歉意。
不,它返回null
。
+1因爲這就是我想要的 – 2013-05-23 23:46:42
從MSDN documentation for NameValueCollection.Item Property (String):
注意
這個屬性返回在下列情況下無效:1)如果指定鍵沒有找到; 2)如果找到指定的鍵並且其關聯值爲空。該屬性不區分這兩種情況。
不,它返回null
。
ConfigurationManager.AppSettings
是NameValueCollection
- 從the MSDN documentation:
GET方法不區分 因爲 指定的關鍵是沒有找到它,因爲 返回值和 空被返回之間空與關鍵字相關聯的是null。
(我的重點)
不,它返回null
。
的AppSettings是一個NameValueCollection - 在NameValueCollection.Get頁面上按了caution:
這種方法在 下列情況下返回空引用 (在Visual Basic中爲Nothing):1)如果指定的 關鍵沒有找到; 2)如果找到 指定密鑰並且其 關聯值爲空引用 (在Visual Basic中爲Nothing)。此方法 不區分兩個 個案。
其他答案引用Item屬性的文檔。它可能不會立即明白爲什麼他們是相關的看下面的代碼片段。
ConfigurationManager.AppSettings["blah"]
在C#中使用方括號語法來訪問索引器。這些是特殊的屬性,可以使用與數組相同的方式對類進行索引。查看NameValueCollection.Item屬性的定義,您會注意到它不使用常規屬性語法。此關鍵字和索引器參數用於將此屬性定義爲索引器。
public string this[
string name
] { get; set; }
在文檔中,索引器隱式命名爲Item,參數用方括號括起來。
這是我不明白爲什麼有則引用Get方法答案 - 也許一個調用其他?一個將返回null -
無論如何,要回答這個問題......
號,如果你訪問一個不存在的鍵的異常不會被拋出。
以下是NameValueCollection.Item財產文檔的相關部分。
該屬性在下列情況下返回null:1)如果未找到指定的 鍵; 2)如果找到指定的密鑰並且其關聯值爲空。該屬性不區分 這兩種情況。
-1:既然你已經意識到這是一個懶惰的問題,實際上並不僅僅是試圖將它放在* less *工作而不是在這裏發佈這個問題? – 2010-07-06 14:47:08
或者查看['NameValueCollection.Item'](http://msdn.microsoft.com/en-us/library/8d0bzeeb.aspx)屬性的文檔... – 2010-07-06 14:49:16
謝謝那些回答。我會盡量不要養成像這樣的問題。 – Ben 2010-07-06 17:22:32