C#

Зачем в C# нужны типы данных?

Решил после JavaScript'а изучить шарп, на первых шагах столкнулся с такой интересной вещью, как типы данных - есть ли от них какая то определённая польза/смысл? Почему, например, в js такого нету?
♦ Типы данных в JS есть, но типизация динамическая. То есть компилятор сам определяет тип по тому, какие данные присваиваются.
♦ В C# статическая типизация. При объявлении переменных нужно указать ее тип.
Типы нужны чтобы комп знал как именно работать с данной переменной.
Статическая типизация дает лучший контроль кода и уменьшает потенциальное кол-во ошибок.
Компилятор при статической типизации не допустит таких ошибок в рантайме, поскольку не даст скомпилировать и запустить приложение.
К слову, в C# есть возможность и динамической типизации (var). И есть еще отключение контроля типов (dynamic). Но в последнем случае программист должен сам контролировать типы.
Егор Куземченко
Егор Куземченко
4 891
Лучший ответ
Дмитрий Александрович спасибо за развёрнутый ответ.
Егор Куземченко Пожалуйста )
Серёга Метлев "К слову, в C# есть возможность и динамической типизации (var)."
Ха-ха, тогда динамическая типизация есть в C++ и даже C.
Это не динамическая типизация, а автоопределение типа.
Динамическая, это когда в одну переменную можно класть данные то одного, то другого типа.
Типизация бывает динамической и статической. В JS она динамическая, в C# статическая
Про "определённую пользу/смысл" сказать не получится, ибо и у того и у другого есть свои достоинства и недостатки
Динамическая типизация - это не просто возможность не указывать тип переменной \ параметра функции \ поля класса!
Возможность не указывать тип есть во всех нормальных Си-подобных языках включая и чистый Си:
auto x = 1; // тут int
auto b = "abc"; // тут строка const char*
А вот динамическая типизация - это возможность в одну переменную (ну или параметр и т. д.) класть значения разных типов по очереди.
Например так (и этот пример демонстрирует одно из преимуществ дин. тип., хотя и не такое значительное):
var x = "123"; // тип строка
x = parseInt(x); // а теперь number