2017-02-13 16 views
0

Ее была несколько месяцев, что я использую бритву как вид двигатель в моих приложениях ASP.NET MVC, и я использую переменный как:Используйте вар ключевого слово для переменного вида двигателя бритвы вместо того, чтобы объявить с явным типом данных

string myVariable = "My Variable String"; 

Или это:

int count = 0; 

Но сегодня я считаю, что мы должны только объявить переменную с ключевым словом вар.

Переменные объявляются с помощью ключевого слова вара согласно w3school и Всех переменным в официальной документации asp.net бритвы, они используют ключевое слово в уаге razor documentation example.

Так что мои вопросы:

  1. Какова выгода от использования ключевого слова уага вместо явного указания типа переменных?

  2. Как я уже говорил, я использую переменную типа string и int, я делаю неправильно?

+0

Нет ничего плохого в явном объявлении типа (ключевое слово 'var' просто означает, что компилятор выведет тип) –

+0

Mate, тогда почему этот пункт находится в w3school ** Основные правила синтаксиса бритвы для C# ** ??, Я просто не понимаю смысла. –

+1

Как и многие примеры из 'w3schools', утверждение просто неверно. –

ответ

3

это просто не соответствует действительности. Вы определенно не должны объявлять все с помощью ключевого слова var. Хорошим правилом является использование var для замещения объявлений long types, когда тип переменной очищается от кода объявления.

Пример:

действительно используют вар, как это:

var someName = 0; 
var someName = string.Empty; 

var someList = new List<Mynamespace.MyType>(); 

Не используйте вар, если фактический тип не ясно:

var myVar = AMethodWhichReturnsSomeResult(); 

здесь тип, возвращаемый методом может изменение, что означает, что вы можете иметь очень тонкие ошибки, когда это произойдет.

Итак, будьте умны об этом. используйте его в своих целях, но не тогда, когда тип нечетко читателю.

+0

Что вы подразумеваете под ** Не используйте var, когда фактический тип не ясен ** ?? –

+0

Это означает, что, как и в приведенном примере, просто взглянув на код, вы видите только «эй, вот вызов метода, о, подождите, что он даже вернется?». Другими словами, даже описательные имена методов редко дают вам представление о том, каков тип возвращаемых данных, особенно если он не является примитивным, а сложным типом. –

+1

@ShahzadMirza, один из самых распространенных вопросов этого сайта: [Элемент модели, переданный в словарь, имеет тип .., но для этого словаря требуется элемент модели типа] (http://stackoverflow.com/questions/40373595/ the-model-item-received-in-the-dictionary-is-of-type-but-this-dictionary-requ), и наиболее распространенная причина связана с использованием «var» (и если эти пользователи явно объявили тип, ошибка не возникнет) –