Будет ли ConfigurationManager.AppSettings [ "blah" ] выдавать исключение, если "blah" не существует в web/app.config?
Искренние извинения за сверх ленивый вопрос.
Будет ли ConfigurationManager.AppSettings [ "blah" ] выдавать исключение, если "blah" не существует в web/app.config?
Искренние извинения за сверх ленивый вопрос.
Нет, он возвращает null
.
Из Документация MSDN для NameValueCollection.Item Property (String):
Внимание
Это свойство возвращает null в следующих случаях: 1) если указанный ключ не найден; и 2) если найденный ключ найден, и его связанное значение равно нулю. Это свойство не различает два случая.
Нет, он возвращает null
.
ConfigurationManager.AppSettings
является NameValueCollection
- из документации MSDN:
Метод Get не различает между null, который возвращается, потому что указанный ключ не найден и null, который возвращается, поскольку значение, связанное с ключом, равно null.
(мой акцент)
Нет, он возвращает null
.
AppSettings - это NameValueCollection - согласно предостережение на странице NameValueCollection.Get:
Этот метод возвращает нулевую ссылку (Ничего в Visual Basic) в в следующих случаях: 1) если указанные ключ не найден; и 2) если указанный ключ найден и его связанное значение - это нулевая ссылка (Ничего в Visual Basic). Этот метод не различает два случаев.
Другие ответы ссылаются на документацию для свойства Item. Возможно, не сразу видно, почему они имеют отношение к следующему фрагменту кода.
ConfigurationManager.AppSettings["blah"]
Синтаксис квадратной скобки используется в С# для доступа к индексаторам. Это специальные свойства, которые позволяют индексировать класс таким же образом, как и массив. Глядя на определение свойства NameValueCollection.Item, вы заметите, что он не использует синтаксис нормального свойства. Это ключевое слово и параметры индексатора используются для определения этого свойства как индексатора.
public string this[
string name
] { get; set; }
В документации индексаторы неявно называются Item, а параметры окружены квадратными скобками.
Мне непонятно, почему были ответы, которые ссылались на метод Get - может быть, один вызывает другой?
Во всяком случае, чтобы ответить на вопрос...
Нет. Исключение не будет выбрано, если вы получите доступ к несуществующему ключу - возвращается null.
Вот соответствующий раздел из документации свойств NameValueCollection.Item.
Это свойство возвращает null в следующих случаях: 1) если указанное ключ не найден; и 2) если указанный ключ найден и его связанное значение равно null. Это свойство не различает два случая.
Да http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Изменить: это явно неправильно. Слева за полезными комментариями ниже.