ConfigurationManager.AppSettings ["blah"] genererà un'eccezione se "blah" non esiste in web / app.config?
Sincere scuse per la domanda super pigra.
NameValueCollection.Itemproprietà ...
ConfigurationManager.AppSettings ["blah"] genererà un'eccezione se "blah" non esiste in web / app.config?
Sincere scuse per la domanda super pigra.
NameValueCollection.Itemproprietà ...
Risposte:
No, ritorna null.
Dalla documentazione MSDN per NameValueCollection.Item Property (String) :
Attenzione
Questa proprietà restituisce null nei seguenti casi: 1) se la chiave specificata non viene trovata; e 2) se la chiave specificata viene trovata e il valore associato è nullo. Questa proprietà non distingue tra i due casi.
No, ritorna null.
AppSettings è una NameValueCollection , come da avvertenza nella pagina NameValueCollection.Get :
Questo metodo restituisce un riferimento null (Nothing in Visual Basic) nei seguenti casi: 1) se la chiave specificata non viene trovata; e 2) se la chiave specificata viene trovata e il valore associato è un riferimento null (Nothing in Visual Basic). Questo metodo non distingue tra i due casi.
No, ritorna null.
ConfigurationManager.AppSettingsè un NameValueCollection- dalla documentazione MSDN :
Il metodo Get non distingue tra null che viene restituito perché la chiave specificata non viene trovata e null che viene restituito perché il valore associato alla chiave è null.
(la mia enfasi)
Altre risposte fanno riferimento alla documentazione per la proprietà Item. Potrebbe non essere immediatamente ovvio il motivo per cui sono rilevanti guardando il seguente frammento di codice.
ConfigurationManager.AppSettings["blah"]
La sintassi delle parentesi quadre viene utilizzata in C # per accedere agli indicizzatori. Si tratta di proprietà speciali che consentono di indicizzare una classe nello stesso modo in cui lo può essere un array. Osservando la definizione della proprietà NameValueCollection.Item , noterai che non utilizza la normale sintassi della proprietà. La parola chiave this e i parametri dell'indicizzatore vengono utilizzati per definire questa proprietà come indicizzatore.
public string this[
string name
] { get; set; }
Nella documentazione, gli indicizzatori sono denominati implicitamente Item e i parametri sono racchiusi tra parentesi quadre.

Non mi è chiaro il motivo per cui c'erano risposte che facevano riferimento al metodo Get - forse uno chiama l'altro?
In ogni caso, per rispondere alla domanda ...
No. Non verrà generata un'eccezione se si accede a una chiave inesistente: verrà restituito un valore null.
Ecco la sezione pertinente dalla documentazione della proprietà NameValueCollection.Item .
Questa proprietà restituisce null nei seguenti casi: 1) se la chiave specificata non viene trovata; e 2) se la chiave specificata viene trovata e il valore associato è nullo. Questa proprietà non distingue tra i due casi.
Sì http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Modifica: questo è chiaramente sbagliato. Lasciato per i commenti utili di seguito.
NameValueCollectionnon è stato possibile trovare, ovvero il sistema non è riuscito a trovare alcuna impostazione. Le raccolte di valori del nome non generano un'eccezione quando si tenta di recuperare un singolo valore che non esiste ..