Что возвращает "count ++" в С#?
Просто наткнулся на немного кода, который не делал то, что я думал. Другие думают, что это должно вернуться? Есть ли хорошее объяснение, почему это не так?
int count = 0;
count++.ToString(); // Returns 1 no?
Я всегда считал, что число ++ совпадает с count = count + 1...
Ответы
Ответ 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".