2015-07-06 2 views
2

Любая идея, почему использование var velocity = ... дает мне необъявленную ошибку? Когда я использовал int velocity = ..., он не дал никаких ошибок.var vs int: var undefined, int is 0

// Error: Cannot use local variable 'velocity' before it is declared 
var velocity = int.TryParse(txtVelocity.Text, out velocity) ? velocity : -1; 

// Valid 
int velocity = int.TryParse(txtVelocity.Text, out velocity) ? velocity : -1; 
+0

проблема заключается просто в том, что вы используете параметр velocity как out, а в? синтаксис, то есть ошибка компиляции. –

+0

Не используйте тернарный оператор таким образом. Используйте оператор 'if'. Это приводит к «скорости = скорости», а лишние сохраненные строки не компенсируют отсутствие логики. – Jonesopolis

+0

Я до сих пор не понимаю, почему люди все равно нарушают использование var. Если вы знаете тип, как, очевидно, здесь, используйте его. Он документирует намерение. –

ответ

6

Поскольку данные говорят так

Вы не можете использовать переменные, объявленные с помощью var в выражении инициализации.

См: Implicitly Typed Local Variables (C# Programming Guide)

Variables declared by using var cannot be used in the initialization expression. In other words, this expression is legal: int i = (i = 20); but this expression produces a compile-time error: var i = (i = 20);

2

Факт вар ключевое слово означает «Я хочу, чтобы переменная, которую я до сих пор не знаю, что это тип, пожалуйста, г-н компилятор найти это тип для меня». И теперь вы хотите использовать эту неопределенную скорость var как параметр out. И это невозможно, потому что вы создаете цикл для компилятора.

Смежные вопросы