Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Неявный тип локальных переменных


Автор: tercat 11.10.2012, 14:11
Почему рекомендуется использовать неявный тип локальных переменных вместо явного типа?

Код

var webClient = new WebClient();


вместо 


Код

WebClient webClient = new WebClient();

Автор: VSB 11.10.2012, 22:15
Код

class A {/*...*/}

class B:A {/*...*/}

var b1=new B(); //b1 имеет тип B

A b2=new B(); //b2 имеет тип A, важно при вызове виртуальных функций.

Как то так я думаю.

Автор: IBS 12.10.2012, 19:59
Цитата(tercat @  11.10.2012,  14:11 Найти цитируемый пост)
Почему рекомендуется использовать неявный тип локальных переменных вместо явного типа?

Не, ни разу не рекомендуется )
Но, если посмотреть на этот код, то очевидно, что variable  имеет тип WebClient, а писать МЕНЬШЕ, так зачем писать больше?? =)
Код

var variable = new WebClient();


а вот из такой строки, сразу, нифига не видно:
Код

var eshoVariable  = variable ;

Следовательно, в этом случае, правильнее писать так:
Код

WebClient eshoVariable  = variable ;

Автор: Moid 17.10.2012, 11:12
http://blogs.msdn.com/b/ruericlippert/archive/2012/08/28/foolish-consistency-is-foolish.aspx

Автор: Экскалупатор 17.10.2012, 20:14
))) так спросил бы у него, чего он это рекомендует.

Автор: RoboTown 21.10.2012, 03:53
Все зависит от ситуации, как правильно отметили выше. Помните когда var появился? Правильно, вместе с LINQ. И цель его, в первую очередь, была в том, чтобы избегать написания длинных (и часто не очевидных) типов с генерик параметрами. В случае с WebClient явная форма даже возможно чуть лучше, но в целом здесь нормально писать и так и так.

Автор: mihryak 22.10.2012, 15:55
Цитата(RoboTown @  21.10.2012,  04:53 Найти цитируемый пост)
цель его, в первую очередь, была в том, чтобы избегать написания длинных (и часто не очевидных) типов с генерик параметрами

цель была дать возможность создавать переменные анонимных типов, а там уж и на обычные 
типы распространилась фишка, раз уж уже ввели её

Автор: RoboTown 1.11.2012, 23:28
Цитата

цель была дать возможность создавать переменные анонимных типов

Соглашусь, но для сложных вложенных генерик типов в LINQ тоже.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)