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.


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:




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.


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)


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.


-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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.