45

對於所有邏輯運算符,Shift運算符,Additive運算符和所有乘法運算符,我們都有等效賦值運算符。爲什麼C#中沒有|| =或者&& =運算符?

爲什麼邏輯運算符會被忽略? 難道有一個很好的技術原因嗎?

+0

@ p.campbell - 其中一些真的是! – Yuck 2011-06-14 15:25:44

+0

你有使用它們的原因嗎? – 2011-06-14 15:30:28

+0

你能提供一個他們會有用的例子嗎? – Fosco 2011-06-14 15:32:49

回答

47

爲什麼邏輯運算符會被遺漏?有一個很好的技術原因,爲什麼它很難?

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

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

+12

我以前想過短路複合分配。沒有人使用它們,因爲它們不存在。另請參閱http://stackoverflow.com/questions/2324549,其中給出了一些示例用例。 – 2011-06-14 15:50:20

+3

您能解釋一下我的公司的一些(不被稱呼的)成員的「只有少數人會使用它,它增加了複雜性,而且有一種現成的方式來完成既定的目標」嗎?我試過了,顯然失敗了。 :) – 2011-06-14 16:00:10

+4

re:「你想在什麼情況下說'b1 || = b2; ...'」?這些情況:我有一個元素數組,需要爲每個元素測試一些條件,所以我循環遍歷數組並創建一個'運行總數'sorts:'result = TRUE; for(i ...){result && = a [i];}'或者我可能想要執行一個'OR'的運行。事實上,我現在正在開展的一個項目中遇到了這樣的情況。這很愚蠢嗎? – daver 2013-08-10 14:59:50

相關問題