對於所有邏輯運算符,Shift運算符,Additive運算符和所有乘法運算符,我們都有等效賦值運算符。爲什麼C#中沒有|| =或者&& =運算符?
爲什麼邏輯運算符會被忽略? 難道有一個很好的技術原因嗎?
對於所有邏輯運算符,Shift運算符,Additive運算符和所有乘法運算符,我們都有等效賦值運算符。爲什麼C#中沒有|| =或者&& =運算符?
爲什麼邏輯運算符會被忽略? 難道有一個很好的技術原因嗎?
爲什麼邏輯運算符會被遺漏?有一個很好的技術原因,爲什麼它很難?
他們沒有。如果你願意,你可以做&=
或|=
或^=
。
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
的||
和&&
運營商沒有以化合物的形式,因爲坦率地說,他們是一個有點傻。在什麼情況下你想說
b1 ||= b2;
b1 &&= b2;
這樣,如果左側不會改變的右手邊是不是評估?似乎只有少數人會真正使用這個功能,那麼爲什麼要使用這個功能呢?
有關複合運算符看到我嚴肅的文章的詳細信息:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx
和後續四月愚人文章在這裏:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx
我以前想過短路複合分配。沒有人使用它們,因爲它們不存在。另請參閱http://stackoverflow.com/questions/2324549,其中給出了一些示例用例。 – 2011-06-14 15:50:20
您能解釋一下我的公司的一些(不被稱呼的)成員的「只有少數人會使用它,它增加了複雜性,而且有一種現成的方式來完成既定的目標」嗎?我試過了,顯然失敗了。 :) – 2011-06-14 16:00:10
re:「你想在什麼情況下說'b1 || = b2; ...'」?這些情況:我有一個元素數組,需要爲每個元素測試一些條件,所以我循環遍歷數組並創建一個'運行總數'sorts:'result = TRUE; for(i ...){result && = a [i];}'或者我可能想要執行一個'OR'的運行。事實上,我現在正在開展的一個項目中遇到了這樣的情況。這很愚蠢嗎? – daver 2013-08-10 14:59:50
@ p.campbell - 其中一些真的是! – Yuck 2011-06-14 15:25:44
你有使用它們的原因嗎? – 2011-06-14 15:30:28
你能提供一個他們會有用的例子嗎? – Fosco 2011-06-14 15:32:49