Cấu hình Trình quản lý.AppSinstall sẽ được đặt ngoại lệ nếu không có tồn tại?


124

Cấu hình Trình quản lý.AppSinstall ["blah"] sẽ đưa ra một ngoại lệ nếu "blah" không tồn tại trong web / app.config?

Lời xin lỗi chân thành cho câu hỏi siêu lười biếng.


5
-1: Vì bạn đã nhận ra đây là một câu hỏi lười biếng, nên thực sự bạn sẽ không thử làm việc đó ít hơn là đăng câu hỏi này ở đây?
Lasse V. Karlsen

Hoặc xem tài liệu về NameValueCollection.Itemtài sản ...
Tim Robinson

2
Cảm ơn bạn đã trả lời. Tôi sẽ thử và không tạo thói quen cho những câu hỏi như thế này.
Ben Aston

49
Pfh. Vui lòng tiếp tục đặt câu hỏi như thế này vì tôi và phần còn lại của thế giới ứng dụng cấu hình google cài đặt khóa không tồn tại vì nó dễ hơn phân tích MSDN. Bất cứ điều gì làm cho cuộc sống IMO dễ dàng hơn một chút. Nâng cao vì F những Dbag.
Cory Mawhorter

31
Nhìn vào câu hỏi lười biếng của bạn để cứu người khác một vài phút thời gian 4 năm và đếm. :)
Matt Beckman

Câu trả lời:




7

Không, nó trở lại null.

Ứng dụng Cài đặt là một NameValueCollection - theo sự thận trọng trên trang NameValueCollection.Get :

Phương thức này trả về một tham chiếu null (Không có gì trong Visual Basic) trong các trường hợp sau: 1) nếu không tìm thấy khóa được chỉ định; và 2) nếu tìm thấy khóa được chỉ định và giá trị liên quan của nó là tham chiếu null (Không có gì trong Visual Basic). Phương pháp này không phân biệt giữa hai trường hợp.


6

Không, nó trở lại null.

ConfigurationManager.AppSettingslà một NameValueCollection- từ tài liệu MSDN :

Phương thức Get không phân biệt giữa null được trả về vì không tìm thấy khóa được chỉ định và null được trả về vì giá trị được liên kết với khóa là null.

(nhấn mạnh của tôi)


3

Các câu trả lời khác tham khảo tài liệu cho thuộc tính Item. Có thể không rõ ràng ngay lập tức tại sao chúng có liên quan khi xem đoạn mã sau.

ConfigurationManager.AppSettings["blah"]

Cú pháp dấu ngoặc vuông được sử dụng trong C # để truy cập các bộ chỉ mục. Đây là các thuộc tính đặc biệt cho phép một lớp được lập chỉ mục theo cùng một cách mà một mảng có thể. Nhìn vào định nghĩa của thuộc tính NameValueCollection.Item , bạn sẽ thấy rằng nó không sử dụng cú pháp thuộc tính thông thường. Từ khóa này và các tham số bộ chỉ mục được sử dụng để xác định thuộc tính này là một bộ chỉ mục.

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

Trong tài liệu này, các bộ chỉ mục được đặt tên ngầm định là Item và các tham số được bao quanh bởi dấu ngoặc vuông.

Bộ chỉ mục như thể hiện trong tài liệu MSDN.

Tôi không rõ tại sao có câu trả lời tham chiếu phương thức Get - có thể người này gọi người kia?

Bằng mọi giá, để trả lời câu hỏi ...

Không. Một ngoại lệ sẽ không được ném nếu bạn truy cập khóa không tồn tại - null sẽ được trả về.

Đây là phần có liên quan từ tài liệu thuộc tính NameValueCollection.Item .

Thuộc tính này trả về null trong các trường hợp sau: 1) nếu không tìm thấy khóa được chỉ định; và 2) nếu tìm thấy khóa được chỉ định và giá trị liên quan của nó là null. Khách sạn này không phân biệt giữa hai trường hợp.


-2

http://msdn.microsoft.com/en-us/l Library / system.configuration.configurationmanager.appsinstall.aspx

Chỉnh sửa: điều này rõ ràng là sai. Còn lại cho các ý kiến ​​hữu ích dưới đây.


1
câu trả lời cho câu hỏi của bạn là Không giống như @Tim đã đề cập. Trang chỉ để nói rằng nếu không thể tải cài đặt ứng dụng thì sẽ có ngoại lệ. Nhưng nếu một giá trị không xuất hiện trong cài đặt ứng dụng thì bạn sẽ không gặp ngoại lệ. Sẽ thực sự không có ý nghĩa khi ném lỗi chỉ vì một giá trị không tồn tại trong từ điển. Nhưng nếu từ điển không tồn tại thì đó sẽ là một lý do để đưa ra lỗi. (Từ điển thuật ngữ chỉ được sử dụng để chỉ một bộ sưu tập tùy ý.)
spinon

Liên kết đó nói rằng một ngoại lệ được đưa ra nếu NameValueCollectionkhông thể tìm thấy - tức là hệ thống không thể tìm thấy bất kỳ cài đặt nào . Tên Bộ sưu tập Giá trị không ném ngoại lệ khi bạn cố truy xuất một giá trị duy nhất không tồn tại ..
Dexter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.