2012-01-30 47 views
1

我想知道是否是可能的線excutes,類似於後更新值(類似VAR ++)之後的值:更新行執行

int age = 10; 
Console.WriteLine(age++); 

輸出10,但age右後變爲11。

我的目標是有類似:

int offset = 1; 
Console.WriteLine(offset += 4); 

但具有上述行爲。

編輯:我知道你總是可以做兩行,但我想知道/希望你能做到一個。

+0

不,我不認爲這是可能的。 – 2012-01-30 20:37:22

+4

試圖保持一行的任何特定原因?在實踐中,複雜的理解單行程序通常會避免使用更易讀/可維護的代碼。 – 2012-01-30 20:41:04

回答

5

更新調用該函數後的值:

int offset = 1; 
Console.WriteLine(offset); 
offset += 4; 

你看:

Console.WriteLine(age++); 

在本質上是一樣的:

Console.WriteLine(age); 
age += 1; 
+3

+1酷解決方案...永遠不會想到發佈這個真實的:-) – Yahia 2012-01-30 20:37:32

+0

所以沒有辦法做到內聯? – Mike 2012-01-30 20:38:40

+1

@Yahia - 看起來像羅伯特哈維雖然; - ) – Oded 2012-01-30 20:38:46

3

你打算做後來保持代碼的開發人員如果以舊式的方式做到這一點,會更快樂:

int offset = 1; 
Console.WriteLine(offset); 
offset += 4; 

我想殺了那個試圖聯繫到這個人的人,讓我感到困惑。認真。

+0

+1殺死任何人之前:-) – Yahia 2012-01-30 20:40:39

1

據我所知,你無法在整數上重載++運算符以達到你想要的結果。您也不能將++運算符嵌套多次後遞增。 類似的問題在這裏問:

C/C++ Post-increment by more than one

普遍的共識是,你只需要使用額外的線,並寫

Console.WriteLine(offset); 
offset += 4; 
0

,如果你欺騙你可以做到這一點。

我建議反對它的一般風格和良好的意義;但有可能將所有這些組合成一條線:

Console.WriteLine("{0}", offset, offset += 4);