135 votes

ConfigurationManager.AppSettings["blah"] lancera-t-il une exception si "blah" n'existe pas ?

Est-ce que ConfigurationManager.AppSettings["blah"] lancera une exception si "blah" n'existe pas dans le web/app.config ?

140voto

Tim Robinson Points 28696

Non, il retourne null .

26voto

Martin Liversage Points 43712

De la Documentation MSDN pour la propriété NameValueCollection.Item (String) :

Attention

Cette propriété renvoie un résultat nul dans les cas suivants : 1) si la clé spécifiée n'est pas trouvée ; et 2) si la clé spécifiée est trouvée et que sa valeur associée est nulle. Cette propriété ne fait pas de distinction entre les deux cas.

7voto

Dexter Points 7001

Non, il retourne null .

AppSettings est un Collection NomValeur - conformément à la attention en el NameValueCollection.Get page :

Cette méthode renvoie une référence nulle (Rien en Visual Basic) dans le cas suivants : 1) si la clé spécifiée spécifiée n'est pas trouvée ; et 2) si la clé clé spécifiée est trouvée et que sa valeur associée est une référence nulle (Rien en Visual Basic). Cette méthode ne fait pas de distinction entre les deux cas.

6voto

Andrew Points 4523

Non, il retourne null .

ConfigurationManager.AppSettings est un NameValueCollection - de la documentation MSDN :

La méthode Get ne distingue pas entre null qui est retourné parce que la clé spécifiée n'est pas trouvée et null qui est retourné parce que la valeur associée à la clé est nulle.

(c'est moi qui souligne)

3voto

Scott Munro Points 4008

D'autres réponses font référence à la documentation relative à la propriété Item. La pertinence de ces réponses n'est pas forcément évidente à la lecture de l'extrait de code suivant.

ConfigurationManager.AppSettings["blah"]

La syntaxe des crochets est utilisée en C# pour accéder aux indexeurs. Il s'agit de propriétés spéciales qui permettent à une classe d'être indexée de la même manière qu'un tableau. En regardant la définition de la propriété NomValueCollection.Item vous remarquerez qu'elle n'utilise pas la syntaxe normale des propriétés. Le mot-clé this et les paramètres indexer sont utilisés pour définir cette propriété comme un indexeur.

public string this[
    string name
] { get; set; }

Dans la documentation, les indexeurs sont implicitement nommés Item et les paramètres sont entourés de crochets.

Indexers as shown in the MSDN documentation.

Je ne comprends pas pourquoi certaines réponses faisaient référence au Obtenez peut-être l'un appelle-t-il l'autre ?

En tout cas, pour répondre à la question...

Non. Une exception ne sera pas levée si vous accédez à une clé inexistante - un null sera renvoyé.

Voici la section pertinente de la NomValueCollection.Item documentation sur la propriété.

Cette propriété renvoie un résultat nul dans les cas suivants : 1) si la clé spécifiée spécifiée n'est pas trouvée ; et 2) si la clé spécifiée est trouvée et que sa valeur valeur associée est nulle. Cette propriété ne fait pas de distinction entre les deux cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X