2013-06-03 25 views
7

Tôi có tuyên bố sau:Làm thế nào để đơn giản hóa này C# if/else Cú pháp

serverCard.Details = !String.IsNullOrEmpty(card.Details) ? card.Details : serverCard.Details; 

Tôi muốn kiểm tra và xem card.Details là null hoặc rỗng ... nếu không, hãy viết các giá trị. Có cú pháp nào cho phép tôi bỏ qua điều kiện khác không?

+2

sẽ không có ý nghĩa nhiều. Hãy suy nghĩ về nó, để lại một phần khác để lại một khoảng trống trong mã của bạn, cụ thể là những gì bạn đang cố gắng để chỉ định? – Polity

+0

Sự thay đổi duy nhất tôi sẽ thực hiện là loại bỏ '!' Và trao đổi các giá trị có điều kiện chỉ đơn giản cho luồng đọc. –

Trả lời

16

Chắc chắn, chỉ cần sử dụng thường xuyên if:

if(!String.IsNullOrEmpty(card.Details)) 
    serverCard.Details = card.Details 
+1

Đây là lựa chọn tốt hơn IMO ... Người kia chỉ cảm thấy vô nghĩa trong trường hợp này. – SlxS

+0

+1 chỉ là những gì tôi nghĩ. Sạch sẽ và đơn giản. –

+4

không thể +1 ở đây, luôn ủng hộ {}. – sschrass

5

Bạn luôn có thể sử dụng cũ if tuyên bố:

if(!String.IsNullOrEmpty(card.Details)) 
{ 
    serverCard.Details = card.Details; 
} 

Tôi nghĩ rằng các nhà điều hành ternary là không cần thiết ở đây.

0

Bạn có thể viết một phương thức mở rộng cho Chuỗi để kiểm tra xem nullOrEmpty hay chưa. Các thường xuyên nếu sau đó sẽ ngắn hơn

Phương pháp mở rộng:

public static bool IsNullOrEmpty(this string str) 
{ 
    return string.IsNullOrEmpty(str); 
} 

public static bool IsNullOrWhiteSpace(this string str) 
{ 
    return string.IsNullOrWhiteSpace(str); 
} 

if:

if(!card.Details.IsNullOrWhiteSpace()) 
    serverCard.Details = card.Details 

Phương pháp mở rộng sẽ làm việc cho mỗi chuỗi.

Các vấn đề liên quan