ConfigurationManager.AppSettings ["blah"], "blah" yoksa bir istisna oluşturacak mı?


124

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.


5
-1: Daha önce bir tembel sorudur fark ettik beri aslında sadece olması çalışıyorum olmaz az burada bu soruyu gönderme dışında çalışacak mı?
Lasse V. Karlsen

Ya da NameValueCollection.Itemmülkün belgelerine bakarak ...
Tim Robinson

2
Cevaplayanlara teşekkür ederim. Bunun gibi soruları alışkanlık haline getirmeye çalışmayacağım.
Ben Aston

49
PFH. Lütfen bunun gibi sorular sormaya devam edin çünkü ben ve dünyanın geri kalanı google configurationmanager appsettings var olmayan anahtar, çünkü MSDN ayrıştırmaktan daha kolay. Hayatı biraz daha kolaylaştıran her şey IMO. Olumlu oy verildi çünkü bu Dbags F.
Cory Mawhorter

31
Başkalarını 4 yıl içinde birkaç dakika kurtaran ve sayan tembel sorunuza bakın. :)
Matt Beckman

Yanıtlar:




7

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.


6

Hayır, geri dönüyor null.

ConfigurationManager.AppSettingsbir 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)


3

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.

MSDN belgelerinde gösterilen indeksleyiciler.

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.


-2

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ı.


1
Sorunuzun cevabı @Tim gibi değil. Sayfa, uygulama ayarlarının yüklenememesi durumunda bir istisna atıldığını söyledi. Ancak uygulama ayarlarında bir değer yoksa, o zaman bir istisna almazsınız. Sözlükte bir değer olmadığı için bir hata atmak gerçekten mantıklı olmaz. Ancak sözlük yoksa, bu bir hata yapmak için bir neden olurdu. (Sözlük terimi sadece gelişigüzel bir koleksiyona atıfta bulunmak için kullanıldı.)
spinon

Bu bağlantı, NameValueCollectionbulunamazsa 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 ..
Dexter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.