Est-ce que ConfigurationManager.AppSettings["blah"] lancera une exception si "blah" n'existe pas dans le web/app.config ?
Réponses
Trop de publicités?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.
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.
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)
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.
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.
- Réponses précédentes
- Plus de réponses