2012-01-30 2 views
1

мне было интересно, если можно было обновить значение после строки excutes, похожего на:Обновление значения после выполнения строки (по аналогии с варом ++)

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

выходов 10, но age становится 11 сразу же после.

Моя цель состоит в том, чтобы иметь что-то вроде:

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

Но имея вышеупомянутое поведение.

Редактировать: Я знаю, что вы всегда можете сделать это в 2 строках, но мне было интересно/надеяться, что вы сможете сделать это в одном.

+0

Нет, я не думаю, что это возможно. –

+4

Любая конкретная причина для попытки сохранить ее в одной строке? На практике сложно понять, что однострочники обычно избегают использования более читаемого/поддерживаемого кода. –

ответ

5

Обновить значение после вызова функции:

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

Вы видите:

Console.WriteLine(age++); 

в сущности то же самое, как:

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

+1 крутое решение ... никогда бы не подумал опубликовать это по-настоящему :-) – Yahia

+0

, так что нет возможности сделать это inline? – Mike

+1

@Yahia - Похоже, что у Роберта Харви было такое же, хотя ;-) – Oded

3

Вы собираетесь сделать разработчикам, которые должны поддерживать ваш код позже намного счастливее, если вы просто сделаете это старомодно:

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

Я бы убил человека, который попытался включить это, и заставил меня разобраться в этом. Шутки в сторону.

+0

+1 перед тем, как убить любого :-) – Yahia

1

Насколько я знаю, вы не можете перегрузить оператор ++ для целых чисел, чтобы достичь желаемого результата. Вы также не можете вложить оператор ++ в post increment несколько раз. Аналогичный вопрос был задан здесь:

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

Общее мнение состоит в том, что вы просто должны использовать дополнительные линии, и написать

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

Вы можете это сделать, если вы обманываете.

Я рекомендую против него общий стиль и разумные цели; но можно объединить все это в одну строку:

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