2010-07-06 5 views
85

ConfigurationManager.AppSettings ["blah"] genererà un'eccezione se "blah" non esiste nel web/app.config?ConfigurationManager.AppSettings ["blah"] genererà un'eccezione se "blah" non esiste?

Mi scuso sinceramente per la domanda super pigra.

+5

-1: Dal momento che hai già capito che si tratta di una domanda pigra, in realtà non proverei semplicemente * meno * a lavorare che a pubblicare questa domanda qui? –

+0

O guardando la documentazione per la proprietà ['NameValueCollection.Item'] (http://msdn.microsoft.com/en-us/library/8d0bzeeb.aspx) ... –

+2

Grazie a coloro che hanno risposto. Proverò a non prendere l'abitudine di domande come queste. – Ben

risposta

95

No, restituisce null.

+12

+1 perché è quello che voglio che faccia –

-2

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

Edit: questo è chiaramente sbagliata. A sinistra per i commenti utili di seguito.

+1

la risposta alla tua domanda è No come @Tim menzionato. La pagina indicava semplicemente che se le app non possono essere caricate, viene lanciata un'eccezione. Ma se un valore non è presente nelle app, allora non otterrai un'eccezione. Non avrebbe davvero senso lanciare un errore solo perché un valore non esiste in un dizionario. Ma se il dizionario non esistesse, quello sarebbe un motivo per lanciare un errore. (Il termine dizionario era appena usato per riferirsi a una raccolta arbitraria.) – spinon

+0

Questo link dice che un'eccezione viene generata se non è possibile trovare 'NameValueCollection' - cioè il sistema non riesce a trovare * nessuna * impostazione. Nome Valore Le raccolte non generano un'eccezione quando si tenta di recuperare un singolo valore che non esiste. – Dexter

4

No, restituisce null.

ConfigurationManager.AppSettings è un NameValueCollection - da the MSDN documentation:

Il metodo Get non distingue tra nullo che viene restituito perché la chiave specificata non si trova e nulla che viene restituito perché il valore associato alla chiave è nullo.

(corsivo mio)

4

No, restituisce null.

AppSettings è un NameValueCollection - come per il caution sulla pagina NameValueCollection.Get:

Questo metodo restituisce un riferimento null (Nothing in Visual Basic) nei seguenti casi: 1) se il specificato chiave non si trova; e 2) se viene trovata la chiave specificata e il suo valore associato è un riferimento null (Nothing in Visual Basic). Questo metodo non fa distinzione tra i due casi .

1

Altre risposte fanno riferimento alla documentazione relativa alla proprietà dell'oggetto. Potrebbe non essere immediatamente evidente il motivo per cui sono pertinenti guardando il seguente frammento di codice.

ConfigurationManager.AppSettings["blah"] 

La sintassi della parentesi quadra viene utilizzata in C# per accedere agli indicizzatori. Queste sono proprietà speciali che consentono di indicizzare una classe nello stesso modo in cui può essere una matrice. Osservando la definizione della proprietà NameValueCollection.Item, si noterà che non utilizza la normale sintassi delle proprietà.La parola chiave e i parametri dell'indicizzatore vengono utilizzati per definire questa proprietà come indicizzatore.

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

Nella documentazione, gli indicizzatori sono denominati in modo implicito Item ei parametri sono racchiusi tra parentesi quadre.

Indexers as shown in the MSDN documentation.

Non è chiaro per me perché ci fossero risposte che fa riferimento al metodo Get - forse uno chiama l'altro?

In ogni caso, per rispondere alla domanda ...

No. Un'eccezione non viene generata se si accede a un inesistente chiave - un nulla verrà restituito.

Questa è la sezione pertinente dalla documentazione di proprietà NameValueCollection.Item.

Questa proprietà restituisce nulla nei seguenti casi: 1) se il chiave specificata non si trova; e 2) se viene trovata la chiave specificata e il suo valore associato è nullo. Questa proprietà non distingue tra i due casi.

Problemi correlati