Bạn có thể làm:
someBool = (someStatement) ? true : someBool;
Tôi không nghĩ rằng giành cho bạn rất nhiều rõ ràng hơn:
if (someStatement)
{
someBool = true;
}
Nhưng nó thực sự có vẻ là một vấn đề của hương vị. Tôi sẽ không nói hoặc là rõ ràng là xấu, nhưng trước đây là không phổ biến, vì vậy tôi có lẽ sẽ tránh nó.
Bạn hỏi tại sao bạn không thể sử dụng toán tử như thế này:
someBool = (someStatement) ? true : ;
Đây sẽ là một sự thay đổi ngôn ngữ rất lớn! Lưu ý rằng bài tập có dạng như sau:
<location> = <expression>;
Biểu thức được đánh giá để cung cấp một số giá trị và giá trị đó được lưu trữ tại vị trí. (Tùy thuộc vào việc vị trí là biến, thuộc tính, trường hoặc biểu thức lập chỉ mục hoạt động "lưu trữ" có thể hoàn toàn khác nhau.)
Tại đây bạn đang đề xuất giá trị của biểu thức ở bên phải, ngoài thông thường các giá trị, có thể là một giá trị "không thay đổi", có hành vi đặc biệt khi bạn sử dụng nó trong một câu lệnh gán nó không làm cho hoạt động lưu trữ xảy ra. Đó là khác với bất kỳ giá trị bình thường nào khác, và có khả năng gây ngạc nhiên.Nhưng điều đó có nghĩa là gì nếu bạn sử dụng nó ở những nơi khác?
// Does this call DoSomething when cond is false?
// If so, what value is passed to it?
someObject.DoSomething(cond?x:);
// What happens here if cond is false? Does it cancel
// the entire assignment?
int x = 77 + (cond?2:) * 3 - 4;
// If cond is false, are methods F1 and F2 called or not called?
int x = F1() + (cond?2:) + F2();
// What does this do? Does it skip the return if cond is false?
return (cond?2:);
Tôi nghĩ rằng bạn sẽ tìm thấy nó rất khó để đưa ra hành vi hợp lý, trực quan và phù hợp cho các nhà điều hành trong tất cả những trường hợp này, và tôi không nghĩ rằng nó sẽ có ích bất cứ nơi nào khác hơn là một cách đơn giản bài tập. Nó không phù hợp với phần còn lại của ngôn ngữ - bao gồm nó sẽ làm cho ngôn ngữ khó học, đọc, hiểu, thực hiện và giải thích. Nó chỉ là không có giá trị nó cho một chút nhỏ gọn của conciseness.
Bạn mong đợi những biểu thức gì? (SomeStatement)? true: 'và' (someStatement)? true' để đánh giá? –
@ O.R.Mapper đúng nếu someStatement là đúng và không thay đổi nếu someStatement là sai (câu hỏi này hoàn toàn là giả thuyết, không phải là một vấn đề actuall tôi có) –
* không thay đổi * là gì? Biểu thức phải đánh giá một giá trị cụ thể, trong trường hợp này là kiểu 'bool' - nghĩa là' true' hoặc 'false'. –