0

Начал учить C# и задался вопросом.
Что лучше использовать, "var" или явный тип данных, наподобие: "byte", "int", "float", "char"....
Есть ли в них различие, и что лучше использовать?

Eveee
  • 5
  • 1
  • на любителя как удобно. Просто не всегда известно вам что там под var, компилятору то известно – Aziz Umarov Aug 27 '20 at 14:39
  • 2
    Это холиварный вопрос. Есть адепты обоих подходов. Одни хотят видеть тип переменной, другие считают такую необходимость признаком некачественного кода. Однозначного ответа на этот вопрос нет в природе . – tym32167 Aug 27 '20 at 14:42
  • А есть разница в производительности программы?. Например используя var, программа будет работать хуже и тд... – Eveee Aug 27 '20 at 14:44
  • @Eveee Внутри в любом случае скомпилируется под статическую типизацию, потому что язык такой. var удобен для перебежчиков с языков динамической типизации. Но лично мне нравится описывать явный класс, так меньше шансов запутаться и совершить ошибку. – Геннадий П Aug 27 '20 at 15:00
  • Разница в производительности может быть, но обычно она минимальная. Надо понимать, что var использует результат выражения справа, то есть var i = 10; i - будет целым числом, а для var i = 10.5 - i будет числом с плавающей точкой. Для явного ж задания типа, например int i = .... - не важно, что будет справа написано, оно все равно будет преобразовано в int. – tym32167 Aug 27 '20 at 16:52
  • @tym32167, разницы в производительности не должно быть, потому что после компиляции никакого var уже нет – Андрей NOP Aug 27 '20 at 17:07
  • @АндрейNOP если на выходе ожидается один и тот же код - да. Если же сравнивать, утрируя, var i = 0; и Object i = 0; - то разница в боксинге. – tym32167 Aug 27 '20 at 17:19
  • @АндрейNOP https://ru.stackoverflow.com/a/537170/179763 – tym32167 Aug 27 '20 at 17:41
  • @tym32167, ну согласен, var — берет тот тип, что стоит справа без каких-либо махинаций, а при явном указании типа компилятор добавляет операции повышающего или неявного преобразования, но, видимо, я из тех, кто считает это признаком некачественного кода. В любом случае: 1. за var всегда скрывается какой-то конкретный тип и можно навести мышку на него и увидеть что это за тип; 2. после компиляции никакого var уже нет. Надо эти вещи понимать и проблем не будет. – Андрей NOP Aug 28 '20 at 06:04
  • @АндрейNOP я только указал, что с var и без var разница в результате может быть в некоторых случаях. А то, что будут или не будут проблемы - давайте не будем холиварить, особенно учитывая, что я тоже использую var. – tym32167 Aug 28 '20 at 10:48

0 Answers0