Можно создать дубликат:
Use of var keyword in C#Каково точное использование ключевого слова var?
После обсуждения с коллегами по поводу использования «Var» ключевое слово в C# 3 Интересно, что мнения людей были на соответствующих применений умозаключений типа с помощью вар?
Например я довольно лениво используется вар в сомнительных обстоятельствах, например: -
foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Более законного использования вар заключаются в следующем: -
var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Интересно LINQ, кажется, немного серая область, например: -
var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be here.
Понятно, какие результаты будут в том, e тип, который реализует IEnumerable, однако это не совсем очевидно так же, как и var, объявляющий новый объект.
Это еще хуже, когда речь заходит о LINQ к объектам, e.g.:-
var results = from item in someList
where item != 3
select item;
Это не лучше, чем equivilent foreach(var item in someList) { // ... }
equivilent.
Здесь существует серьезная проблема в отношении безопасности типов - например, если бы мы поставили результаты этого запроса в перегруженный метод, который принял IEnumerable<int>
и IEnumerable<double>
, вызывающий может непреднамеренно передать неправильный тип.
Использование var 'вам не нужно определять тип' кажется очень плохим основанием для его использования ... вы должны знать, что такое тип, var - это просто ярлык, чтобы избежать ввода его – Dotnet
Вы только что скопировали вопрос из дублирующего комментария @ Henrik? –
@Bali C: Да, и если вы посмотрите на его предыдущие вопросы, вы заметите довольно тревожный шаблон ... – BoltClock