Числовые преобразования в C#
Ранее я уже писал о числовых типах, которые существуют в языке C#. Сегодня же речь пойдёт об их преобразовании.
В тот момент, когда значение одного типа (допустим
Значения значимых типов преобразуются (конвертируются) неявно (implicitly) тогда и только тогда, когда отсутствует вероятность потери точности результата (data loss). Это возможно в том случае, когда тип, к которому мы хотим преобразовать наше значение, хранится в памяти в большем или равном количестве бит, как и исходный.
🔸 implicit преобразования:
Как видно из кода выше, нам не требуется никаких дополнительных действий для преобразования, ведь
🔸 explicit преобразования:
Если мы захотим выполнить аналогичное преобразование в обратном направлении, то компилятор не позволит нам это сделать и сообщит об ошибке на этапе компиляции, как в примере выше.
В таком случае мы будем вынуждены производить преобразования уже явно:
💬 Позвольте познакомить вас со своим тёзкой, который также имеет богатый практический опыт в разработке программного обеспечения и преподает айтишные предметы в ВУЗе. Почитайте https://t.me/tobeITmen, чтобы узнать, каково это - быть айтишником 😉
#data_types
Ранее я уже писал о числовых типах, которые существуют в языке C#. Сегодня же речь пойдёт об их преобразовании.
В тот момент, когда значение одного типа (допустим
int
) присваивается переменной другого типа (например long
), выполняется преобразование типов.Значения значимых типов преобразуются (конвертируются) неявно (implicitly) тогда и только тогда, когда отсутствует вероятность потери точности результата (data loss). Это возможно в том случае, когда тип, к которому мы хотим преобразовать наше значение, хранится в памяти в большем или равном количестве бит, как и исходный.
🔸 implicit преобразования:
int i = 12;
long l = i; // Implicit (int to long)
float f = i; // Implicit (int to float)
double d = 4.2f; // Implicit (float to double)
Как видно из кода выше, нам не требуется никаких дополнительных действий для преобразования, ведь
long
и double
располагаются в 64 битах, в то время как int
в 32, а значит потеря точности результата нам не грозит.🔸 explicit преобразования:
long l = 12;
int i = l; // Compiler error
Если мы захотим выполнить аналогичное преобразование в обратном направлении, то компилятор не позволит нам это сделать и сообщит об ошибке на этапе компиляции, как в примере выше.
В таком случае мы будем вынуждены производить преобразования уже явно:
int i = (int)l; // Explicit (long to int)
float f = 4.2f;
i = (int)f; // Explicit (float to int)
double d = 4.2f;
f = (float)d; // Explicit (double to float)
💬 Позвольте познакомить вас со своим тёзкой, который также имеет богатый практический опыт в разработке программного обеспечения и преподает айтишные предметы в ВУЗе. Почитайте https://t.me/tobeITmen, чтобы узнать, каково это - быть айтишником 😉
#data_types