ConfigurationManager.AppSettings [“ blah”] จะทำให้เกิดข้อยกเว้นหรือไม่หากไม่มี“ blah”


124

ConfigurationManager.AppSettings ["blah"] จะมีข้อยกเว้นหรือไม่หากไม่มี "blah" ในเว็บ / app.config

ขออภัยอย่างจริงใจสำหรับคำถามที่ขี้เกียจสุด ๆ


5
-1: เนื่องจากคุณได้ตระหนักแล้วว่ามันเป็นคำถามที่น่าเกียจจริง ๆ แล้วการลองมันจะไม่ได้ผลน้อยไปกว่าการโพสต์คำถามนี้ที่นี่หรือ?
Lasse V.Karlsen

หรือดูเอกสารสำหรับNameValueCollection.Itemทรัพย์สิน ...
Tim Robinson

2
ขอบคุณผู้ที่ตอบ ฉันจะพยายามไม่ตั้งคำถามแบบนี้ให้เป็นนิสัย
Ben Aston

49
Pfh โปรดถามคำถามเช่นนี้ต่อไปเพราะฉันและคีย์ที่เหลือของ Google configurationmanager appsettings ไม่มีอยู่จริงเพราะง่ายกว่าการแยกวิเคราะห์ MSDN อะไรก็ได้ที่ทำให้ชีวิตง่ายขึ้น IMO โหวตขึ้นเพราะ F เหล่านั้น Dbags
Cory Mawhorter

31
ดูคำถามขี้เกียจของคุณช่วยคนอื่นเวลาไม่กี่นาที 4 ปีและนับ :)
Matt Beckman

คำตอบ:



25

จากเอกสาร MSDN สำหรับ NameValueCollection.Iem Property (String) :

ความระมัดระวัง

คุณสมบัตินี้จะคืนค่า null ในกรณีต่อไปนี้: 1) หากไม่พบคีย์ที่ระบุ และ 2) หากพบคีย์ที่ระบุและค่าที่เกี่ยวข้องเป็นโมฆะ คุณสมบัตินี้ไม่ได้แยกความแตกต่างระหว่างสองกรณี


7

ไม่มันกลับnullมา

AppSettings เป็นNameValueCollection - ตามข้อควรระวังในหน้าNameValueCollection.Get :

วิธีนี้ส่งคืนการอ้างอิงที่เป็นโมฆะ (ไม่มีอะไรใน Visual Basic) ในกรณีต่อไปนี้: 1) ถ้าไม่พบคีย์ที่ระบุ และ 2) หากพบคีย์ที่ระบุและค่าที่เกี่ยวข้องคือการอ้างอิงว่าง (ไม่มีใน Visual Basic) วิธีนี้ไม่ได้แยกความแตกต่างระหว่างสองกรณี


6

ไม่มันกลับnullมา

ConfigurationManager.AppSettingsเป็นNameValueCollection- จากเอกสาร MSDN :

เมธอด Get ไม่แยกความแตกต่างระหว่างnull ที่ถูกส่งกลับเนื่องจากไม่พบคีย์ที่ระบุและ null ซึ่งถูกส่งคืนเนื่องจากค่าที่เกี่ยวข้องกับคีย์เป็น null

(เน้นของฉัน)


3

คำตอบอื่น ๆ อ้างอิงเอกสารสำหรับคุณสมบัติ Item อาจไม่ชัดเจนในทันทีว่าเหตุใดจึงเกี่ยวข้องกับการดูข้อมูลโค้ดต่อไปนี้

ConfigurationManager.AppSettings["blah"]

ไวยากรณ์วงเล็บเหลี่ยมใช้ใน C # เพื่อเข้าถึงตัวทำดัชนี คุณสมบัติเหล่านี้เป็นคุณสมบัติพิเศษที่อนุญาตให้จัดทำดัชนีคลาสในลักษณะเดียวกับอาร์เรย์ เมื่อดูคำจำกัดความของคุณสมบัติNameValueCollectionItemคุณจะสังเกตเห็นว่ามันไม่ได้ใช้ไวยากรณ์คุณสมบัติปกติ คีย์เวิร์ดนี้และพารามิเตอร์ตัวทำดัชนีถูกใช้เพื่อกำหนดคุณสมบัตินี้เป็นตัวทำดัชนี

public string this[
    string name
] { get; set; }

ในเอกสารประกอบตัวสร้างดัชนีมีชื่อโดยปริยาย Item และพารามิเตอร์ล้อมรอบด้วยวงเล็บเหลี่ยม

ดัชนีดังที่แสดงในเอกสาร MSDN

ไม่ชัดเจนสำหรับฉันว่าเหตุใดจึงมีคำตอบที่อ้างถึงเมธอดGet - คนหนึ่งอาจเรียกอีกฝ่าย?

ในอัตราใดก็ได้เพื่อตอบคำถาม ...

ไม่ข้อยกเว้นจะไม่เกิดขึ้นหากคุณเข้าถึงคีย์ที่ไม่มีอยู่จริง - ค่าว่างจะถูกส่งกลับ

นี่คือส่วนที่เกี่ยวข้องจากไฟล์ เอกสารคุณสมบัติNameValueCollection.Iem

คุณสมบัตินี้จะคืนค่า null ในกรณีต่อไปนี้: 1) หากไม่พบคีย์ที่ระบุ และ 2) หากพบคีย์ที่ระบุและค่าที่เกี่ยวข้องเป็นโมฆะ คุณสมบัตินี้ไม่ได้แยกความแตกต่างระหว่างสองกรณี


-2

ใช่http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx

แก้ไข: สิ่งนี้ผิดอย่างชัดเจน เหลือไว้สำหรับความคิดเห็นที่เป็นประโยชน์ด้านล่าง


1
คำตอบสำหรับคำถามของคุณไม่เหมือนที่ @Tim กล่าวถึง หน้านี้ชี้ไปที่บอกเพียงว่าหากไม่สามารถโหลด appsettings ได้จะมีข้อยกเว้น แต่ถ้าไม่มีค่าใน appsettings คุณจะไม่ได้รับข้อยกเว้น มันไม่สมเหตุสมผลเลยที่จะโยนข้อผิดพลาดเพียงเพราะไม่มีค่าในพจนานุกรม แต่ถ้าไม่มีพจนานุกรมนั่นอาจเป็นสาเหตุให้เกิดข้อผิดพลาด (พจนานุกรมคำถูกใช้เพื่ออ้างถึงคอลเลกชันโดยพลการ)
spinon

ลิงก์นั้นระบุว่ามีข้อยกเว้นเกิดขึ้นหากNameValueCollectionไม่พบนั่นคือระบบไม่พบการตั้งค่าใด ๆ คอลเลกชันค่าชื่อไม่เกิดข้อยกเว้นเมื่อคุณพยายามดึงค่าเดียวที่ไม่มีอยู่ ..
Dexter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.