Подтвердить что ты не робот

Что возвращает "count ++" в С#?

Просто наткнулся на немного кода, который не делал то, что я думал. Другие думают, что это должно вернуться? Есть ли хорошее объяснение, почему это не так?

int count = 0;

count++.ToString(); // Returns 1 no?

Я всегда считал, что число ++ совпадает с count = count + 1...

4b9b3361

Ответ 1

x++ - оператор пост-приращения. Это означает, что значение x увеличивается, но возвращается старое (без приращения) значение x (0 в вашем случае, к которому применяется ToString).

Чтобы получить нужное поведение, используйте оператор pre increment ++x.

Ответ 2

По крайней мере четыре ответа, опубликованные до сих пор, ошибочны. Чрезвычайно распространенная ошибка заключается в том, что оператор ++ имеет ту же неопределенную семантику, что и в C. Это не так. Семантика оператора ++ хорошо определена и сильно отличаются от того, как они были описаны неверными ответами здесь. См. Мой ответ в последний раз, когда этот вопрос был задан для деталей:

В чем разница между я ++ и ++ i?

Ответ 3

x ++ - это приращение; в качестве результата используется текущее значение (0), тогда происходит ++.

Немного напоминает:

var tmp = count;
count++;
Consle.WriteLine(tmp);

Пред-инкремент (++ x) будет вести себя так, как вы ожидали.

Ответ 4

(++i).ToString();

делает именно то, что вы ожидаете.

Ответ 5

В исходном коде всегда будет отображаться 0.

Попробуйте следующее:

(++c).ToString();

Это вернет 1.

С сайта MSDN:

Первая форма представляет собой приращение приставки операция. Результат операции - значение операнда после него был увеличен.

Вторая форма - это постфиксное приращение операция. Результат операции - значение операнда перед ним был увеличен.

Ответ 6

Нет, ++ count return "1". count ++. ToString() выполняет метод ToString(), а затем увеличивает счетчик, поэтому возвращает "0".