ReSharper обычно предлагает мне это, и я все еще ищу хорошую причину для этого.
Единственное, что пришло мне в голову, это то, что объявление его ближе к области, в которой он будет использоваться, может не инициализировать его в некоторых случаях, когда это не обязательно (потому что условие и т.д.)
Что-то связанное с этим:
int temp;
foreach (var x in collection) {
temp = x.GetValue();
//Do something with temp
}
Действительно ли это отличается от
foreach (var x in collection) {
int temp = x.GetValue();
//...
}
Я имею в виду, что не второй код дороже, потому что он каждый раз выделяет память? Или оба одинаковы? Конечно, после завершения цикла во втором коде сборщик мусора позаботится о переменной temp
, но не в первом...