Wird ConfigurationManager.AppSettings ["bla"] eine Ausnahme auslösen, wenn "bla" nicht existiert?

124

Wird ConfigurationManager.AppSettings ["blah"] eine Ausnahme auslösen, wenn "blah" in der web / app.config nicht vorhanden ist?

Aufrichtige Entschuldigung für die super faule Frage.

Ben Aston
quelle
5
-1: Da Sie bereits erkannt haben, dass es sich um eine faule Frage handelt, wäre es nicht weniger Arbeit, diese Frage hier zu stellen?
Lasse V. Karlsen
Oder schauen Sie sich die Dokumentation für die NameValueCollection.ItemImmobilie an ...
Tim Robinson
2
Vielen Dank an diejenigen, die geantwortet haben. Ich werde versuchen, Fragen wie diese nicht zur Gewohnheit zu machen.
Ben Aston
49
Pfh. Bitte stellen Sie weiterhin Fragen wie diese, da ich und der Rest der Welt keine Konfigurationsschlüssel für Google Configuration Manager-Apps haben, da dies einfacher ist als das Parsen von MSDN. Alles, was das Leben ein bisschen einfacher macht IMO. Upvoted weil F diese Dbags.
Cory Mawhorter
31
Schauen Sie sich Ihre faule Frage an, sparen Sie anderen Menschen ein paar Minuten Zeit 4 Jahre und zählen Sie. :)
Matt Beckman

Antworten:

133

Nein, es kehrt zurück null.

Tim Robinson
quelle
25

Aus der MSDN-Dokumentation für NameValueCollection.Item-Eigenschaft (Zeichenfolge) :

Vorsicht

Diese Eigenschaft gibt in den folgenden Fällen null zurück: 1) wenn der angegebene Schlüssel nicht gefunden wird; und 2) wenn der angegebene Schlüssel gefunden wird und sein zugehöriger Wert null ist. Diese Eigenschaft unterscheidet nicht zwischen den beiden Fällen.

Martin Liversage
quelle
7

Nein, es kehrt zurück null.

AppSettings ist ein Namevaluecollection - gemäß der Vorsicht auf der NameValueCollection.Get Seite:

Diese Methode gibt in den folgenden Fällen eine Nullreferenz (Nothing in Visual Basic) zurück: 1) Wenn der angegebene Schlüssel nicht gefunden wird; und 2) wenn der angegebene Schlüssel gefunden wird und sein zugehöriger Wert eine Nullreferenz ist (Nothing in Visual Basic). Diese Methode unterscheidet nicht zwischen den beiden Fällen.

Dexter
quelle
6

Nein, es kehrt zurück null.

ConfigurationManager.AppSettingsist ein NameValueCollection- aus der MSDN-Dokumentation :

Die Get-Methode unterscheidet nicht zwischen null, das zurückgegeben wird, weil der angegebene Schlüssel nicht gefunden wird, und null, das zurückgegeben wird, weil der dem Schlüssel zugeordnete Wert null ist.

(meine Betonung)

Andrew
quelle
3

Andere Antworten beziehen sich auf die Dokumentation für die Item-Eigenschaft. Es ist möglicherweise nicht sofort ersichtlich, warum sie relevant sind, wenn man sich das folgende Codefragment ansieht.

ConfigurationManager.AppSettings["blah"]

Die Syntax in eckigen Klammern wird in C # verwendet, um auf Indexer zuzugreifen. Dies sind spezielle Eigenschaften, mit denen eine Klasse auf die gleiche Weise indiziert werden kann wie ein Array. Wenn Sie sich die Definition der Eigenschaft NameValueCollection.Item ansehen , werden Sie feststellen, dass sie nicht die normale Eigenschaftssyntax verwendet. Das Schlüsselwort this und die Indexerparameter werden verwendet, um diese Eigenschaft als Indexer zu definieren.

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

In der Dokumentation werden Indexer implizit Item genannt und Parameter in eckigen Klammern angegeben.

Indexer wie in der MSDN-Dokumentation gezeigt.

Mir ist nicht klar, warum es Antworten gab, die auf die Get- Methode verwiesen - vielleicht ruft einer den anderen auf?

Auf jeden Fall, um die Frage zu beantworten ...

Nein. Eine Ausnahme wird nicht ausgelöst, wenn Sie auf einen nicht vorhandenen Schlüssel zugreifen. Eine Null wird zurückgegeben.

Hier ist der relevante Abschnitt aus der Eigenschaftsdokumentation NameValueCollection.Item .

Diese Eigenschaft gibt in den folgenden Fällen null zurück: 1) wenn der angegebene Schlüssel nicht gefunden wird; und 2) wenn der angegebene Schlüssel gefunden wird und sein zugehöriger Wert null ist. Diese Eigenschaft unterscheidet nicht zwischen den beiden Fällen.

Scott Munro
quelle
-2

Ja http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx

Edit: das ist eindeutig falsch. Links für die hilfreichen Kommentare unten.

Ben Aston
quelle
1
Die Antwort auf Ihre Frage lautet Nein, wie bei @Tim erwähnt. Auf der Seite wurde nur darauf hingewiesen, dass eine Ausnahme ausgelöst wird, wenn Appsettings nicht geladen werden können. Wenn jedoch in den Appsettings kein Wert vorhanden ist, erhalten Sie keine Ausnahme. Es wäre wirklich nicht sinnvoll, einen Fehler auszulösen, nur weil ein Wert in einem Wörterbuch nicht vorhanden ist. Wenn das Wörterbuch jedoch nicht vorhanden wäre, wäre dies ein Grund, einen Fehler auszulösen. (Der Begriff Wörterbuch wurde nur verwendet, um sich auf eine beliebige Sammlung zu beziehen.)
Spinon
Dieser Link besagt, dass eine Ausnahme ausgelöst wird, wenn die NameValueCollectionnicht gefunden werden konnte - dh das System konnte keine Einstellungen finden. Name Wert Sammlungen lösen keine Ausnahme aus, wenn Sie versuchen, einen einzelnen Wert abzurufen, der nicht existiert.
Dexter