С появлением ключевого слова var появилась возможность уменьшить количество шаблонного кода и писать более компактные выражения. Напомню, что это произошло достаточно давно, аж в 2007 году и ещё в C# версии 3.0. Вместо явного написания громоздких типов можно писать лаконичный код:
// Вместо List<Dictionary<string, List<Tuple<int, DateTime>>>> data = GetResultData();
var data = GetResultData();
Также var не делает переменную динамической, это всё тот же строго типизируемый код.
Но есть и сильный аргумент против использования var. На примере кода выше разработчику, проводящему ревью, совершенно неочевидно, какой тип имеет переменная data. int? double? string? CustomInfo? Тип, получаемый из функции неочевиден и это в разы ухудшает читаемость кода.
var — полезный инструмент, но требует дисциплины. При очевидном типе он упрощает код, при неочевидном — мешает пониманию.
Как пример отличного применения var:
var rows = new List<string>(); А вы сторонник понятного использования var? Пишите комменты, рад буду дискуссиям.