5

Xem xét thời gian đánh giá, sau hai lần tương đương?if/else vs operator ternary

if(condition1) 
{ 
    //code1 
} 
else 
{ 
    //code2 
} 

condition1 ? code1 : code2

Hoặc họ chỉ là cú pháp khác nhau?

Trả lời

11

Sự khác biệt là trạm sau có thể được sử dụng để trả lại giá trị dựa trên điều kiện.

Ví dụ, nếu bạn có một tuyên bố sau:

if (SomeCondition()) 
{ 
    text = "Yes"; 
} 
else 
{ 
    text = "No"; 
} 

Sử dụng một nhà điều hành ternary, bạn sẽ viết:

text = SomeCondition() ? "Yes" : "No"; 

Lưu ý cách ví dụ đầu tiên thực hiện một tuyên bố dựa trên một điều kiện, trong khi điều kiện thứ hai trả về giá trị dựa trên điều kiện.

3

Có & Có.

Chỉ có lợi nhuận là lưu các dòng mã.

+8

Không phải là người duy nhất. Biến thể thứ hai có thể được sử dụng để liên kết một tham chiếu đến hai đối tượng khác nhau tùy thuộc vào điều kiện, biến thể đầu tiên không thể được sử dụng cho điều đó. – sharptooth

+0

Phải, quên mất điều đó. – Faruz

4

Vâng ... Trong trường hợp trước, bạn có thể có bất kỳ số lượng hoặc loại (biểu thức vs tuyên bố) mã thay cho code1code2. Trong trường hợp sau, chúng phải là biểu thức hợp lệ.

1

Có, đây là hai dạng cú pháp khác nhau và sẽ hoạt động giống hệt nhau và hầu hết mã giống hệt nhau sẽ được trình biên dịch phát ra.