Единственная техническая причина, о которой я знаю, состоит в том, что вы можете выполнять неявное приведение без var
, например
int i = 5;
double a = i; // implicit cast with explicit types
но здесь я предпочитаю var
, поскольку это делает приведение явным; хотя меня не волнуют типы, которые меня волнуют, когда я выполняю преобразование типов, изменяющее представление:
var a = (double)i; // explicit cast with implicit types
Но на самом деле главная причина - это читаемость, как вы сказали. Вопрос, который вам нужно задать себе, - почему вы считаете, что конкретный тип важен для удобства чтения? Вы всегда пишете запросы Linq, вызывая конкретный тип, например,
from ItemChange itemChange in ItemChanges
// instead of
from itemChange in ItemChanges
Аналогично, вы всегда вызываете аргументы типа для универсальных методов вместо использования вывода типа, например,
ItemChanges.Select<ItemChange, ItemChange>((ItemChange itemChange) => ...);
// instead of
ItemChanges.Select(itemChange => ...);
Или вы рады, что компилятор поработал за вас и позволил ему работать с типами, за счет «отсутствия» явно указанной информации о типе?
Если вы довольны выводом типов в linq и универсальных методах, то вы уже приняли решение, что у вас все в порядке, если типы не указаны явно везде, и вы, вероятно, не нашли свой код менее читабельный в результате (на самом деле, вы, вероятно, нашли совсем наоборот). Поэтому использование var
- это просто еще один шаг по тому же пути, по которому вы уже находитесь.