Зміст курсу
Основи C#
Основи C#
Основи перетворення типів
Перетворення типів - це процес перетворення значення одного типу даних в інший. Перетворення типів зазвичай можливе між числово представленими значеннями. Наприклад, ми можемо перетворити float
на int
і int
на float
. Однак перетворення string
на int
не має логічного сенсу і, отже, неможливе.
Існує два типи перетворення типів: Неявне перетворення типів та Явне перетворення типів.
Неявне перетворення типів відбувається, коли значення автоматично перетворюється з одного типу в інший, де це необхідно.
main
int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Коли відбувається неявне перетворення типів, це завжди від меншого до більшого типу даних. Розмір типу даних визначається тим, скільки бітів даних він може зберігати. Наприклад, int
може зберігати 32 біти, тоді як long
може зберігати 64 біти, тому неявне перетворення int
на long
можливе. Аналогічно, float
на double
також можливе.
Типи, упорядковані за їх розмірами, наведені від найменшого до найбільшого нижче:
char
-> int
-> long
-> float
-> double
Явне перетворення типів відбувається, коли користувач конкретно вказує новий тип даних значення, до якого його слід перетворити. Явне перетворення типів необхідне, коли ми хочемо перетворити значення більшого типу даних на менший, оскільки майже завжди відбувається втрата даних при перетворенні значення з більшого на менший тип даних. Наприклад, якщо ми перетворимо 3.14
3.14 на ціле число, це дасть 3
як результат, отже, ми втратили деякі дані під час цього перетворення. Тому компілятору потрібна явна команда від програміста для виконання такого перетворення.
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Щоб виправити помилку в наведеному вище коді, нам потрібно явно привести val1
до цілочисельного значення.
Синтаксис приведення виглядає як (datatype) value
, наприклад (int) 3.1415
. Отже, в цьому випадку ми напишемо (int) val1
:
main
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Дякуємо за ваш відгук!