Использовать в коде var или нет? Я много спорил на эту тему с разными людьми и постепенно у меня сложилось мнение, что большинство путает var (C#) с var (Delphi). Отсюда и начинаются всякие упреки а-ля “вар ухудшает читаемость кода”, “вар повышает вероятность ошибок” и т.п. В случае с дельфовым var все понятно – это скорее зло, чем добро. Но в C# все обстоит немного по-другому, поскольку var – это просто syntactic sugar языка, не более чем, хотя и была введена для LINQ. Если браться за аналогии, то var от Delphi – это нечто похожее на dynamic C#, а вот уже dynamic да, нужно использовать с осторожностью.
Я для себя вывел правила, когда можно использовать var и когда за это лучше по рукам давать:
- Если из объявления переменной видно, какой у нее тип – используем var;
- В foreach используем явное указание типа.
И все. Проиллюстрирую:
var students = new List<Student>(); foreach (Student student in students) {...} int i = students.Count; ReadOnlyCollection<Students> studentsCopy = students.AsReadOnly();
Строчка 1: видно, что List. Незачем дублировать в начале.
Строчка 4: сразу непонятно, какой тип у students.Count, потому нужно указать тип явно. Как и в случае строки 5.
И не забывайте, что если навести курсором на имя переменной, VS покажет попап с явным указанием типа, где, например, будет сказано, что students – это List, а не неизвестный до рантайма тип.