簡體   English   中英

為什么 C# 中沒有 ||= 或 &&= 運算符?

[英]Why are there no ||= or &&= operators in C#?

我們為所有邏輯運算符、移位運算符、加法運算符和所有乘法運算符提供等效的賦值運算符。

為什么邏輯運算符被排除在外? 有沒有很好的技術原因說明它很難?

為什么邏輯運算符被排除在外? 有沒有很好的技術原因說明它很難?

他們沒有 如果你願意,你可以做&=|=^=

bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

|| &&運算符沒有復合形式,因為坦率地說,它們有點傻。 你想在什么情況下說

b1 ||= b2;
b1 &&= b2;

這樣如果左側不改變,右側就不會被評估? 似乎只有少數人真正會使用這個功能,為什么要放它呢?

有關復合運算符的更多信息,請參閱我的嚴肅文章:
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-one

以及后續的愚人節文章:
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/compound-assignment-part-two

也許只是使用

isAdmin = isAdmin || IsGroupAdmin()

我想這部分是因為a ||= b有點令人困惑,因為可能有兩個版本的實現: a = a || b a = a || ba = b || a a = b || a 它們的行為不同,因為有時不評估表達式的右側。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM