2016-05-24 26 views
5
bool isGeneric = variableA != null ? variableB != null ? false : true : true; 

Xin chào các bạn, tôi đã xem qua dòng này. Bất cứ ai có thể giải mã dòng này/nhóm chúng thành dấu ngoặc đơn cho tôi?C# - biểu thức toán tử có điều kiện (một vài liên tiếp)

Đánh giá cao bất kỳ trợ giúp nào được cung cấp. Cảm ơn trước: D

+1

Tôi chỉ muốn vứt bỏ mã mà như thế là khủng khiếp nếu không có lý do khác hơn là thật khó để đọc. Sẽ tốt hơn nếu nhóm nó lại với nhau, hoặc thậm chí tốt hơn để viết một cái gì đó như thế này với các câu lệnh if. Ví dụ 'isGeneric = variableA! = Null? (biếnB! = null? false: true): true; ' – Hill

+0

haha ​​... meh .. tôi nghĩ vậy .. tôi đã gặp mã này ở nơi làm việc của mình .. chắc chắn sẽ thay đổi nó thành cái đó! Cảm ơn bro: D – DriLLFreAK100

+1

Vâng, tôi đã đoán. Tôi đã nhìn thấy một số điều thực sự đáng sợ trong cơ sở mã của công việc của tôi quá – Hill

Trả lời

6

Nó là một ternary bên trong một ternary:

bool isGeneric = variableA != null 
    ? (variableB != null ? false : true) 
    : (true); 

Nếu variableA không bằng null, kiểm tra điều kiện đầu tiên, nếu không trở thành sự thật. Trong điều kiện đầu tiên, trả lại false nếu variableB không phải là rỗng và trả lại true nếu có.

Bạn cũng có thể dịch nó vào nếu/else sau:

bool isGeneric = false; 
if (variableA != null) 
{ 
    if (variableB != null) 
     isGeneric = false; 
    else 
     isGeneric = true; 
} 
else 
    isGeneric = true; 
+0

Súng của tôi ở đâu tôi muốn giết ai đó. phải là "bool isGeneric = (variableA == null || variableB == null)" – ahsant

+0

@ahsant một cách tự nhiên, nhưng đó không phải là giải thích chính xác về mã như được viết :). –

+0

cảm ơn rất nhiều người! giải quyết vấn đề ở đây: D – DriLLFreAK100

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