ConfigurationManager.AppSettings ["blah"] lancera-t-il une exception si "blah" n'existe pas dans le web / app.config?
Excuses sincères pour la question super paresseuse.
NameValueCollection.Item
propriété ...
ConfigurationManager.AppSettings ["blah"] lancera-t-il une exception si "blah" n'existe pas dans le web / app.config?
Excuses sincères pour la question super paresseuse.
NameValueCollection.Item
propriété ...
Réponses:
Non, il revient null
.
À partir de la documentation MSDN pour NameValueCollection.Item Property (String) :
Mise en garde
Cette propriété renvoie null 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 distingue pas les deux cas.
Non, il revient null
.
AppSettings est un NameValueCollection - conformément à la mise en garde sur la page NameValueCollection.Get :
Cette méthode renvoie une référence null (Nothing en Visual Basic) dans les cas suivants: 1) si la clé spécifiée est introuvable; et 2) si la clé spécifiée est trouvée et que sa valeur associée est une référence nulle (Nothing en Visual Basic). Cette méthode ne distingue pas les deux cas.
Non, il revient null
.
ConfigurationManager.AppSettings
est un NameValueCollection
- de la documentation MSDN :
La méthode Get ne fait pas la distinction entre null qui est retourné car la clé spécifiée est introuvable et null qui est retourné car la valeur associée à la clé est null.
(mon emphase)
D'autres réponses font référence à la documentation de la propriété Item. Il n'est peut-être pas immédiatement évident de savoir pourquoi ils sont pertinents en regardant l'extrait de code suivant.
ConfigurationManager.AppSettings["blah"]
La syntaxe entre crochets est utilisée en C # pour accéder aux indexeurs. Ce sont des propriétés spéciales qui permettent à une classe d'être indexée de la même manière qu'un tableau peut l'être. En regardant la définition de la propriété NameValueCollection.Item , vous remarquerez qu'elle n'utilise pas la syntaxe de propriété normale. Le mot clé this et les paramètres de l'indexeur sont utilisés pour définir cette propriété en tant qu'indexeur.
public string this[
string name
] { get; set; }
Dans la documentation, les indexeurs sont nommés implicitement Item et les paramètres sont entourés de crochets.
Je ne vois pas pourquoi il y avait des réponses qui faisaient référence à la méthode Get - peut-être que l'un appelle 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 documentation de la propriété NameValueCollection.Item .
Cette propriété renvoie null 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 distingue pas les deux cas.
Oui http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Edit: c'est clairement faux. À gauche pour les commentaires utiles ci-dessous.
NameValueCollection
n'a pas pu être trouvé - c'est-à-dire que le système n'a pas trouvé de paramètres. Les collections de valeur de nom ne lèvent pas d'exception lorsque vous essayez de récupérer une valeur unique qui n'existe pas.