Чи призведе ConfigurationManager.AppSettings ["blah" виняток, якщо "blah" не існує у веб / app.config?
Щирі вибачення за надто ліниве запитання.
NameValueCollection.Item
майно ...
Чи призведе ConfigurationManager.AppSettings ["blah" виняток, якщо "blah" не існує у веб / app.config?
Щирі вибачення за надто ліниве запитання.
NameValueCollection.Item
майно ...
Відповіді:
Ні, повертається null
.
З документації MSDN для NameValueCollection.Item властивості (рядка) :
Обережність
Ця властивість повертає нуль у таких випадках: 1) якщо вказаний ключ не знайдено; і 2) якщо вказаний ключ знайдений і пов'язане з ним значення є нульовим. Ця властивість не відрізняє двох випадків.
Ні, повертається null
.
AppSettings - це NameValueCollection - відповідно до застереження на сторінці NameValueCollection.Get :
Цей метод повертає нульову посилання (Нічого у Visual Basic) у таких випадках: 1) якщо вказаний ключ не знайдено; і 2) якщо вказаний ключ знайдений і пов'язане з ним значення є нульовою посиланням (Нічого у Visual Basic). Цей метод не розрізняє два випадки.
Ні, повертається null
.
ConfigurationManager.AppSettings
є NameValueCollection
- з документації MSDN :
Метод Get не розрізняє null, який повертається, тому що вказаний ключ не знайдено, і null, який повертається, тому що значення, пов'язане з ключем, є null.
(мій акцент)
Інші відповіді посилаються на документацію для властивості Item. Це може бути не відразу зрозуміло, чому вони доречні, дивлячись на наступний фрагмент коду.
ConfigurationManager.AppSettings["blah"]
Синтаксис квадратного дужки використовується в C # для доступу до індексів. Це спеціальні властивості, які дозволяють індексувати клас так само, як це може бути масив. Переглядаючи визначення властивості NameValueCollection.Item , ви помітите, що воно не використовує звичайний синтаксис властивості. Це ключове слово та параметри індексатора використовуються для визначення цієї властивості як індексатора.
public string this[
string name
] { get; set; }
У документації індексатори неявно названі Елемент, а параметри оточені квадратними дужками.
Мені незрозуміло, чому з'явилися відповіді, на які посилався метод Get - можливо, один дзвонить іншому?
У будь-якому випадку, щоб відповісти на питання ...
Ні. Виняток не буде викинуто, якщо ви отримаєте доступ до неіснуючого ключа - нуль буде повернуто.
Ось відповідний розділ документації щодо властивостей NameValueCollection.Item .
Ця властивість повертає нуль у таких випадках: 1) якщо вказаний ключ не знайдено; і 2) якщо вказаний ключ знайдений і пов'язане з ним значення є нульовим. Ця властивість не відрізняє двох випадків.
Так http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Редагувати: це явно неправильно. Залишив корисні коментарі нижче.
NameValueCollection
не вдалося знайти - тобто система не змогла знайти жодних налаштувань. Колекції значень імен не викидають винятку, коли ви намагаєтеся отримати єдине значення, яке не існує ..