¿ConfigurationManager.AppSettings ["blah"] arrojará una excepción si "blah" no existe en la web / app.config?
Sinceras disculpas por la pregunta súper perezosa.
NameValueCollection.Item
propiedad ...
¿ConfigurationManager.AppSettings ["blah"] arrojará una excepción si "blah" no existe en la web / app.config?
Sinceras disculpas por la pregunta súper perezosa.
NameValueCollection.Item
propiedad ...
Respuestas:
No, vuelve null
.
De la documentación de MSDN para NameValueCollection.Item Property (String) :
Precaución
Esta propiedad devuelve nulo en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es nulo. Esta propiedad no distingue entre los dos casos.
No, vuelve null
.
AppSettings es una NameValueCollection , según la advertencia en la página NameValueCollection . Obtenga :
Este método devuelve una referencia nula (Nothing en Visual Basic) en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es una referencia nula (Nothing en Visual Basic). Este método no distingue entre los dos casos.
No, vuelve null
.
ConfigurationManager.AppSettings
es un NameValueCollection
- de la documentación de MSDN :
El método Get no distingue entre nulo que se devuelve porque no se encuentra la clave especificada y nulo que se devuelve porque el valor asociado con la clave es nulo.
(mi énfasis)
Otras respuestas hacen referencia a la documentación de la propiedad Artículo. Es posible que no sea inmediatamente obvio por qué son relevantes mirando el siguiente fragmento de código.
ConfigurationManager.AppSettings["blah"]
La sintaxis de corchetes se usa en C # para acceder a los indexadores. Estas son propiedades especiales que permiten indexar una clase de la misma manera que una matriz. Si observa la definición de la propiedad NameValueCollection.Item , notará que no utiliza la sintaxis de propiedad normal. La palabra clave this y los parámetros del indexador se utilizan para definir esta propiedad como un indexador.
public string this[
string name
] { get; set; }
En la documentación, los indexadores se denominan implícitamente Item y los parámetros están entre corchetes.
No me queda claro por qué hubo respuestas que hicieron referencia al método Get , ¿tal vez una llama a la otra?
En cualquier caso, para responder la pregunta ...
No. No se lanzará una excepción si accede a una clave inexistente; se devolverá un valor nulo.
Aquí está la sección relevante de la documentación de propiedad NameValueCollection.Item .
Esta propiedad devuelve nulo en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es nulo. Esta propiedad no distingue entre los dos casos.
Sí http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Editar: esto está claramente mal. A la izquierda para los comentarios útiles a continuación.
NameValueCollection
no se puede encontrar, es decir, el sistema no puede encontrar ninguna configuración. Name Value Collections no arroja una excepción cuando intenta recuperar un valor único que no existe ..