[英]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 || b
或a = b || a
a = b || a
。 它們的行為不同,因為有時不評估表達式的右側。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.