2010-04-11 41 views
5

Trong mã của tôi, có một cách viết tắt mà tôi có thể sử dụng để chỉ định biến giá trị của thuộc tính của đối tượng CHỈ nếu đối tượng không phải là ' t null?Cách chỉ định giá trị của thuộc tính cho giá trị VAR nếu đối tượng không rỗng

string username = SomeUserObject.Username;  // fails if null 

Tôi biết tôi có thể thực hiện kiểm tra như (SomeUserObject! = Null) nhưng tôi nghĩ tôi đã thấy một cách viết tắt cho loại thử nghiệm này.

tôi đã cố gắng:

string username = SomeUserObject ?? "" : SomeUserObject.Username; 

Nhưng điều đó không làm việc.

+0

Thứ hai, bạn đang nghĩ đến cả toán tử kết hợp rỗng * và * toán tử điều kiện. Thật không may, bạn đã quản lý để kết hợp chúng thành mã bất hợp pháp. Xem các câu trả lời dưới đây để sử dụng toán tử có điều kiện. –

Trả lời

3

cú pháp của bạn trên thứ hai là hơi off.

string name = SomeUserObject != null ? SomeUserObject.Username : string.Empty; 
-1

Nó được gọi là vô coalescing và được thực hiện như sau:

string username = SomeUserObject.Username ?? "" 
+1

Vẫn sẽ thất bại nếu SomeUserObject là null. – micahtan

+0

SomeUserObject có thể rỗng. Anh ta nên sử dụng toán tử điều kiện và kiểm tra đối tượng của mình cho null. –

+0

Các bạn là chính xác - tôi đã đọc sai câu hỏi, xin lỗi! –

2

Gần nhất bạn sẽ nhận được, tôi nghĩ, là:

string username = SomeUserObject == null ? null : SomeUserObject.Username; 
1

Đây có lẽ là gần như là bạn sẽ nhận được:

string username = (SomeUserObject != null) ? SomeUserObject.Username : null; 
1

Bạn có thể sử dụng? : như những người khác đã đề xuất nhưng bạn có thể muốn xem xét mẫu đối tượng Null nơi bạn tạo một Người dùng tĩnh đặc biệt User.NotloggedIn và sử dụng thay vì null ở mọi nơi.

Sau đó, việc này trở nên dễ dàng để luôn làm .Username.

Lợi ích khác: bạn nhận/có thể tạo ra các ngoại lệ khác nhau cho trường hợp (null) mà bạn không gán biến và (không đăng nhập) khi người dùng đó không được phép làm điều gì đó.

dùng NotloggedIn của bạn có thể là một lớp được thừa kế từ người dùng, nói NotLoggedIn đó sẽ ghi đè các phương pháp và ném ngoại lệ vào những thứ bạn không thể làm gì khi chưa đăng nhập, giống như thực hiện thanh toán, gửi email, ...

Như một lớp học có nguồn gốc từ tài khoản bạn nhận được một số đường cú pháp khá tốt đẹp như bạn có thể làm những việc như if (someuser is NotLoggedIn) ...

2

Trong C# 6.0 bây giờ bạn có thể làm

string username = SomeUserObject?.Username; 

tên truy nhập sẽ được thiết lập để null nếu SomeUSerObject là null. Nếu bạn muốn nó nhận được giá trị "", bạn có thể làm

string username = SomeUserObject?.Username ?? ""; 
Các vấn đề liên quan