Czy ConfigurationManager.AppSettings ["blah"] rzuci wyjątek, jeśli "blah" nie istnieje w pliku web/app.config?Czy ConfigurationManager.AppSettings ["blah"] rzuci wyjątek, jeśli "blah" nie istnieje?
Szczerze przepraszam za bardzo leniwe pytanie.
Czy ConfigurationManager.AppSettings ["blah"] rzuci wyjątek, jeśli "blah" nie istnieje w pliku web/app.config?Czy ConfigurationManager.AppSettings ["blah"] rzuci wyjątek, jeśli "blah" nie istnieje?
Szczerze przepraszam za bardzo leniwe pytanie.
Nie, zwraca null
.
+1, ponieważ właśnie to chcę robić –
Tak http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Edycja: jest to wyraźnie źle. Pozostały do przydatnych komentarzy poniżej.
odpowiedź na twoje pytanie brzmi: nie tak, jak wspomniany @Tim. Strona wskazywała na to, że jeśli nie można wczytać aplikacji, zostanie zgłoszony wyjątek. Ale jeśli wartość nie jest obecna w appsettings, nie dostaniesz wyjątku. Naprawdę nie ma sensu zgłaszanie błędu tylko dlatego, że w słowniku nie ma wartości. Ale jeśli słownik nie istniał, byłby to powód, by rzucić błąd. (Termin słownik był używany tylko w odniesieniu do dowolnej kolekcji). – spinon
To łącze mówi, że wyjątek zostanie zgłoszony, jeśli nie można znaleźć "NameValueCollection" - tzn. System nie może znaleźć * żadnych * ustawień. Kolekcje wartości nazwy nie zgłaszają wyjątku przy próbie pobrania pojedynczej wartości, która nie istnieje. – Dexter
Od MSDN documentation for NameValueCollection.Item Property (String):
Uwaga
Ta właściwość zwraca null w następujących przypadkach: 1) gdy podany klucz nie występuje; i 2) jeśli określony klucz zostanie znaleziony, a powiązana z nim wartość ma wartość null. Ta właściwość nie rozróżnia dwóch przypadków.
Nie, zwraca null
.
ConfigurationManager.AppSettings
jest NameValueCollection
- z the MSDN documentation:
metody GET nie rozróżnia między zerowy, który jest zwrócony ponieważ podany klucz nie zostanie znaleziony i NULL, który jest zwracany, ponieważ wartość powiązany z kluczem ma wartość NULL.
(podkreślenie moje)
Nie, to wraca null
.
AppSettings jest NameValueCollection - jak na caution na NameValueCollection.Get stronie:
Ta metoda zwraca pustą referencję (Nothing w języku Visual Basic) w następujących przypadkach: 1) jeżeli określony klucz nie znaleziono; i 2) jeśli określony klucz zostanie znaleziony, a jego powiązaną wartością jest zerowa wartość odniesienia (Nic w języku Visual Basic). Ta metoda nie rozróżnia dwóch przypadków .
Inne odpowiedzi odnoszą się do dokumentacji dla właściwości Item. Może nie być od razu oczywiste, dlaczego są one istotne, patrząc na poniższy fragment kodu.
ConfigurationManager.AppSettings["blah"]
Składnia nawiasów kwadratowych jest używana w języku C# w celu uzyskania dostępu do indeksatorów. Są to specjalne właściwości, które umożliwiają indeksowanie klasy w taki sam sposób, jak może to być tablica. Patrząc na definicję właściwości NameValueCollection.Item, zauważysz, że nie używa ona normalnej składni właściwości.To słowo kluczowe i parametry indeksera są używane do zdefiniowania tej właściwości jako indeksatora.
W dokumentacji indeksatory są niejawnie nazwane Pozycje i parametry są otoczone nawiasami kwadratowymi.
To nie jest dla mnie jasne, dlaczego nie było odpowiedzi, które użyte metody Get - może jeden nazywa drugiego?
W każdym razie, aby odpowiedzieć na pytanie ...
nr wyjątek nie zostanie wyrzucony jeśli dostęp nieistniejący klucz - zostaną zwrócone null.
Oto odpowiednia sekcja z dokumentacji właściwości NameValueCollection.Item.
Ta właściwość zwraca NULL w następujących przypadkach: 1) jeżeli określony klucz nie znajduje; i 2) jeśli określony klucz zostanie znaleziony, a jego powiązana wartość to null. Ta właściwość nie rozróżnia dwóch przypadków.
-1: Skoro już zdawałeś sobie sprawę, że jest to leniwy pytanie, czy nie próbowałbyś go po prostu * mniej * pracy, niż opublikowanie tego pytania tutaj? –
Lub patrząc na dokumentację właściwości ['NameValueCollection.Item'] (http://msdn.microsoft.com/en-us/library/8d0bzeeb.aspx) ... –
Dziękuję tym, którzy odpowiedzieli. Postaram się nie nawykad takich pytań. – Ben