@whiskeyWithIce
Test Engineer

Использование неявного типизирования для определения типа переменной цикла?

Читаю офф. руководство по C# (Вот), и там пишет :
Рекомендуется использовать неявное типизирование для определения типа переменной цикла в циклах for и foreach.

For:
var phrase = "lalalalalalalalalalalalalalalalalalalalalalalalalalalalalala";
var manyPhrases = new StringBuilder();
for (var i = 0; i < 10000; i++)
{
    manyPhrases.Append(phrase);
}
//Console.WriteLine("tra" + manyPhrases);

Foreach:
foreach (var ch in laugh)
{
    if (ch == 'h')
        Console.Write("H");
    else
        Console.Write(ch);
}
Console.WriteLine();

И вот у меня вопрос, почему рекомендуется именно неявное типизирование? Если я вместо var укажу int, то могут быть какие-то подводные камни или что-то вроде этого? Или же просто так принято, и так нужно делать, потому все так делают?)
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
Наоборот, если вы явно укажите тип сами проблем точно не будет.

Просто var более короткая запись, и очень часто используется когда тип справа точно известен, или наоборот неизвестен (анонимный var a = new { A = 1, B = 2}).

С var могут быть и проблемы, например, когда мы ожидали FLOAT, а получили DOUBLE (для этого можно как указывать тип, так и ипспользовать постфикс F или D). (var приведется к ближайшему вмещающему типу)

Я когда начинал изучать C# тоже не сразу понял в чем прикол, а со временем сам перешел на var.

Код получается короче, и меньше дублирующейся информации:
Customer c = new Customer();
var c = new Customer();

When to Use and Not Use var in C#
Ответ написан
Комментировать
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Никаких подводных камней нет. Оба варианта компилируются одинаково.
Просто так сейчас принято.

Я уже давно привык, хотя поначалу было стрёмно.

Есть большой плюс: такой текст читать легче. Когда приходится работать с большими объемами кода, это имеет значение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы