Akankah ConfigurationManager.AppSettings ["blah"] memunculkan pengecualian jika "blah" tidak ada di web / app.config?
Permintaan maaf yang tulus atas pertanyaan yang sangat malas ini.
NameValueCollection.Item
properti ...
Akankah ConfigurationManager.AppSettings ["blah"] memunculkan pengecualian jika "blah" tidak ada di web / app.config?
Permintaan maaf yang tulus atas pertanyaan yang sangat malas ini.
NameValueCollection.Item
properti ...
Jawaban:
Tidak, itu kembali null
.
Dari dokumentasi MSDN untuk NameValueCollection.Item Property (String) :
Peringatan
Properti ini mengembalikan null dalam kasus berikut: 1) jika kunci yang ditentukan tidak ditemukan; dan 2) jika kunci yang ditentukan ditemukan dan nilai yang terkait adalah null. Properti ini tidak membedakan antara dua kasus.
Tidak, itu kembali null
.
AppSettings adalah NameValueCollection - sesuai dengan kehati - hatian di halaman NameValueCollection.Get :
Metode ini mengembalikan referensi null (Tidak ada dalam Visual Basic) dalam kasus berikut: 1) jika kunci yang ditentukan tidak ditemukan; dan 2) jika kunci yang ditentukan ditemukan dan nilai yang terkait adalah referensi null (Tidak ada dalam Visual Basic). Metode ini tidak membedakan kedua kasus tersebut.
Tidak, itu kembali null
.
ConfigurationManager.AppSettings
adalah NameValueCollection
- dari dokumentasi MSDN :
Metode Dapatkan tidak membedakan antara null yang dikembalikan karena kunci yang ditentukan tidak ditemukan dan null yang dikembalikan karena nilai yang terkait dengan kunci tersebut adalah null.
(penekanan saya)
Jawaban lain merujuk pada dokumentasi untuk properti Item. Mungkin tidak segera jelas mengapa mereka relevan dengan melihat cuplikan kode berikut.
ConfigurationManager.AppSettings["blah"]
Sintaks braket persegi digunakan dalam C # untuk mengakses pengindeks. Ini adalah properti khusus yang memungkinkan kelas diindeks dengan cara yang sama seperti array. Melihat definisi properti NameValueCollection.Item , Anda akan melihat bahwa itu tidak menggunakan sintaks properti normal. Kata kunci ini dan parameter pengindeks digunakan untuk mendefinisikan properti ini sebagai pengindeks.
public string this[
string name
] { get; set; }
Dalam dokumentasi, pengindeks secara implisit dinamai Item dan parameter dikelilingi oleh tanda kurung siku.
Tidak jelas bagi saya mengapa ada jawaban yang mereferensikan metode Dapatkan - mungkin yang satu memanggil yang lain?
Bagaimanapun, untuk menjawab pertanyaan ...
Tidak. Pengecualian tidak akan diberikan jika Anda mengakses kunci yang tidak ada - null akan dikembalikan.
Berikut adalah bagian yang relevan dari dokumentasi properti NameValueCollection.Item .
Properti ini mengembalikan null dalam kasus berikut: 1) jika kunci yang ditentukan tidak ditemukan; dan 2) jika kunci yang ditentukan ditemukan dan nilai yang terkait adalah null. Properti ini tidak membedakan antara dua kasus.
Ya http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Sunting: ini jelas salah. Kiri untuk komentar bermanfaat di bawah ini.
NameValueCollection
tidak dapat ditemukan - yaitu sistem tidak dapat menemukan pengaturan apa pun . Koleksi Nilai Nama tidak membuat pengecualian saat Anda mencoba mengambil satu nilai yang tidak ada ..