ConfigurationManager.AppSettings ["blah"], web / app.config dosyasında "blah" yoksa bir istisna atar mı?
Süper tembel soru için içten özür dilerim.
NameValueCollection.Item
mülkün belgelerine bakarak ...
ConfigurationManager.AppSettings ["blah"], web / app.config dosyasında "blah" yoksa bir istisna atar mı?
Süper tembel soru için içten özür dilerim.
NameValueCollection.Item
mülkün belgelerine bakarak ...
Yanıtlar:
Hayır, geri dönüyor null
.
Gönderen NameValueCollection.Item Mülkiyet (String) için MSDN belgelerine :
Dikkat
Bu özellik, aşağıdaki durumlarda null döndürür: 1) Belirtilen anahtar bulunmazsa; ve 2) belirtilen anahtar bulunursa ve ilişkili değeri boş ise. Bu özellik, iki durum arasında ayrım yapmaz.
Hayır, geri dönüyor null
.
AppSettings'i bir olduğunu NameValueCollection - gereğince dikkatli üzerindeki NameValueCollection.Get sayfa:
Bu yöntem, aşağıdaki durumlarda boş bir başvuru (Visual Basic'te Hiçbir Şey) döndürür: 1) belirtilen anahtar bulunamazsa; ve 2) belirtilen anahtar bulunursa ve ilişkili değeri boş bir başvuruysa (Visual Basic'te Hiçbir Şey). Bu yöntem iki durum arasında ayrım yapmaz.
Hayır, geri dönüyor null
.
ConfigurationManager.AppSettings
bir NameValueCollection
- MSDN belgelerinden :
Get yöntemi , belirtilen anahtar bulunamadığından döndürülen null ile anahtarla ilişkili değer null olduğu için döndürülen null arasında ayrım yapmaz .
(vurgum)
Diğer yanıtlar, Öğe özelliği için belgelere başvurur. Aşağıdaki kod parçacığına bakarak neden alakalı oldukları hemen anlaşılmayabilir.
ConfigurationManager.AppSettings["blah"]
Köşeli parantez sözdizimi, dizinleyicilere erişmek için C # 'da kullanılır. Bunlar, bir sınıfın bir dizinin olabileceği şekilde dizinlenmesine izin veren özel özelliklerdir. NameValueCollection.Item özelliğinin tanımına baktığınızda , normal özellik sözdizimini kullanmadığını fark edeceksiniz. This anahtar sözcüğü ve indeksleyici parametreleri, bu özelliği bir indeksleyici olarak tanımlamak için kullanılır.
public string this[
string name
] { get; set; }
Dokümantasyonda, dizin oluşturucular örtük olarak Öğe olarak adlandırılır ve parametreler köşeli parantez içine alınır.
Get yöntemine atıfta bulunan cevapların neden olduğu bana açık değil - belki biri diğerini çağırıyor?
Her neyse, soruyu cevaplamak için ...
Hayır. Var olmayan bir anahtara erişirseniz bir istisna atılmayacaktır - bir boş değer döndürülecektir.
NameValueCollection.Item özellik dokümantasyonundaki ilgili bölümü burada bulabilirsiniz .
Bu özellik, aşağıdaki durumlarda null döndürür: 1) Belirtilen anahtar bulunmazsa; ve 2) belirtilen anahtar bulunursa ve ilişkili değeri boş ise. Bu özellik, iki durum arasında ayrım yapmaz.
Evet http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Düzenleme: bu açıkça yanlış. Aşağıdaki yararlı yorumlar için ayrıldı.
NameValueCollection
bulunamazsa bir istisna atıldığını - yani sistem herhangi bir ayar bulamadığını söylüyor . Var olmayan tek bir değeri almaya çalıştığınızda Ad Değer Koleksiyonları bir istisna atmaz ..