2012-01-30 71 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);