O ConfigurationManager.AppSettings ["blah"] lançará uma exceção se "blah" não existir no web / app.config?
Desculpas sinceras pela pergunta super preguiçosa.
NameValueCollection.Item
propriedade ...
O ConfigurationManager.AppSettings ["blah"] lançará uma exceção se "blah" não existir no web / app.config?
Desculpas sinceras pela pergunta super preguiçosa.
NameValueCollection.Item
propriedade ...
Respostas:
Não, ele retorna null
.
Na documentação do MSDN da propriedade NameValueCollection.Item (String) :
Cuidado
Esta propriedade retorna nulo nos seguintes casos: 1) se a chave especificada não for encontrada; e 2) se a chave especificada for encontrada e seu valor associado for nulo. Esta propriedade não faz distinção entre os dois casos.
Não, ele retorna null
.
AppSettings é um NameValueCollection - conforme o cuidado na página NameValueCollection.Get :
Este método retorna uma referência nula (Nada no Visual Basic) nos seguintes casos: 1) se a chave especificada não for encontrada; e 2) se a chave especificada for encontrada e seu valor associado for uma referência nula (Nada no Visual Basic). Este método não distingue entre os dois casos.
Não, ele retorna null
.
ConfigurationManager.AppSettings
é um NameValueCollection
- da documentação do MSDN :
O método Get não distingue entre nulo retornado porque a chave especificada não foi encontrada e nulo retornado porque o valor associado à chave é nulo.
(minha ênfase)
Outras respostas fazem referência à documentação da propriedade Item. Pode não ser imediatamente óbvio por que eles são relevantes para o seguinte trecho de código.
ConfigurationManager.AppSettings["blah"]
A sintaxe entre colchetes é usada em C # para acessar indexadores. Essas são propriedades especiais que permitem que uma classe seja indexada da mesma maneira que uma matriz pode ser. Observando a definição da propriedade NameValueCollection.Item , você notará que ela não usa a sintaxe da propriedade normal. Os parâmetros this keyword e indexer são usados para definir essa propriedade como um indexador.
public string this[
string name
] { get; set; }
Na documentação, os indexadores são implicitamente denominados Item e os parâmetros são colocados entre colchetes.
Não está claro para mim por que houve respostas que referenciaram o método Get - talvez um chame o outro?
De qualquer forma, para responder à pergunta ...
Não. Uma exceção não será lançada se você acessar uma chave inexistente - um nulo será retornado.
Aqui está a seção relevante da documentação da propriedade NameValueCollection.Item .
Esta propriedade retorna nulo nos seguintes casos: 1) se a chave especificada não for encontrada; e 2) se a chave especificada for encontrada e seu valor associado for nulo. Esta propriedade não faz distinção entre os dois casos.
Sim http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Edit: isso está claramente errado. Esquerda para os comentários úteis abaixo.
NameValueCollection
não for encontrada - ou seja, o sistema não encontrou nenhuma configuração. Nome Valor coleções não uma exceção quando você tenta recuperar um único valor que não existe ..