Czy ConfigurationManager.AppSettings ["bla"] zgłosi wyjątek, jeśli "blah" nie istnieje w pliku web / app.config?
Szczere przeprosiny za super leniwe pytanie.
NameValueCollection.Item
nieruchomości ...
Czy ConfigurationManager.AppSettings ["bla"] zgłosi wyjątek, jeśli "blah" nie istnieje w pliku web / app.config?
Szczere przeprosiny za super leniwe pytanie.
NameValueCollection.Item
nieruchomości ...
Odpowiedzi:
Nie, wraca null
.
Z dokumentacji MSDN dla właściwości NameValueCollection.Item (String) :
Uwaga
Ta właściwość zwraca wartość null w następujących przypadkach: 1) jeśli określony klucz nie zostanie znaleziony; i 2) jeśli określony klucz zostanie znaleziony, a skojarzona z nim wartość to null. Ta właściwość nie rozróżnia tych dwóch przypadków.
Nie, wraca null
.
AppSettings to NameValueCollection - zgodnie z ostrzeżeniem na stronie NameValueCollection.Get :
Ta metoda zwraca odwołanie o wartości null (Nothing w Visual Basic) w następujących przypadkach: 1) jeśli określony klucz nie zostanie znaleziony; i 2) jeśli określony klucz zostanie znaleziony, a skojarzona z nim wartość jest odwołaniem o wartości null (nic w języku Visual Basic). Ta metoda nie rozróżnia tych dwóch przypadków.
Nie, wraca null
.
ConfigurationManager.AppSettings
to NameValueCollection
- z dokumentacji MSDN :
Metoda Get nie rozróżnia między wartością null, która jest zwracana, ponieważ nie znaleziono określonego klucza, a wartością null, która jest zwracana, ponieważ wartość skojarzona z kluczem jest równa null.
(moje podkreślenie)
Inne odpowiedzi odnoszą się do dokumentacji właściwości Item. Może nie być od razu oczywiste, dlaczego są one odpowiednie, patrząc na następujący fragment kodu.
ConfigurationManager.AppSettings["blah"]
Składnia nawiasu kwadratowego jest używana w języku C # do uzyskiwania dostępu do indeksatorów. Są to specjalne właściwości, które umożliwiają indeksowanie klasy w taki sam sposób, jak 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. Słowo kluczowe this i parametry indeksatora służą do definiowania tej właściwości jako indeksatora.
public string this[
string name
] { get; set; }
W dokumentacji indeksatory mają niejawną nazwę Item, a parametry są otoczone nawiasami kwadratowymi.
Nie jest dla mnie jasne, dlaczego pojawiły się odpowiedzi odwołujące się do metody Get - może jedna wywołuje drugą?
W każdym razie, aby odpowiedzieć na pytanie ...
Nie. Wyjątek nie zostanie zgłoszony, jeśli uzyskasz dostęp do nieistniejącego klucza - zostanie zwrócona wartość null.
Oto odpowiednia sekcja dokumentacji właściwości NameValueCollection.Item .
Ta właściwość zwraca wartość null w następujących przypadkach: 1) jeśli określony klucz nie zostanie znaleziony; i 2) jeśli określony klucz zostanie znaleziony, a skojarzona z nim wartość to null. Ta właściwość nie rozróżnia tych dwóch przypadków.
Tak http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Edycja: to jest ewidentnie błędne. Zostawiłem pomocne komentarze poniżej.
NameValueCollection
nie można znaleźć - tj. System nie mógł znaleźć żadnych ustawień. Kolekcje wartości nazw nie generują wyjątku, gdy próbujesz pobrać pojedynczą wartość, która nie istnieje.