Приведение типов
Автоматическое приведение типов
Автомтическое (неявное) приведение типов осуществляется компилятором неявно, осуществляется без потерь данных только в сторону большего типа, чтобы гарантировать безопасность перевода без потери данных.
// примеры приведения
int myInt = 100;
long myLong = myInt; // int -> long (автоматически)
float myFloat = myLong; // long -> float (автоматически)
double myDouble = myFloat; // float -> double (автоматически)Приведение в обратную строну невозможно, так как будет потеря данных. Обратное приведение например из float в int требуется явного приведения
float a = 10.2f;
int b = (int)a; // b будет равно 10 (дробная часть отбрасывается)
Приобразования из float/double в int часто выполняется для отбрасывания дробной части. Не следует путать эту операцию с операцией округления (например с помощью функции Math.Round)
Автоматическое приведение типов будет выполнено в случае вызова функции у которой есть несколько перегрузок с разными типами данных. Если гарантируется однозначность выводов типов то ошибки компиляции не возникнет, если возникает неопределенность (несколько равносильных вариантов приведения) то будет сгенерирована ошибка.