В програмуванні нерідко значення змінних одного типу присвоюються змінним іншого типу. Наприклад, у наведеному нижче фрагменті коду ціле значення типу int присвоюється змінної з плаваючою точкою типу float:
int i; float f; i = 10; f = i; // привласнити ціле значення змінної типу float |
Якщо в одній операції присвоювання змішуються сумісні типи даних, то значення в правій частині оператора присвоювання автоматично перетворюється в тип, вказаний в лівій його частині. Тому в наведеному вище фрагменті коду значення змінної i спочатку перетвориться в тип float, а потім присвоюється змінної f. Але внаслідок суворого контролю типів далеко не всі типи даних в C # виявляються повністю сумісними, а, отже, не всі перетворення типів дозволені в неявному вигляді.
Перетворення несумісних типів все-таки може бути здійснено шляхом приведення. Приведення типів, означає явне їх перетворення.
Приведення - це команда компілятору перетворити результат обчислення виразу в зазначений тип. Нижче наведена загальна форма приведення типів:
(целевой_тіп) вираз |
Тут целевой_тіп позначає той тип, в який бажано перетворити вказане вираз.
Якщо приведення типів призводить до звужуючого перетворенню, то частина інформації може бути втрачена. Наприклад, в результаті приведення типу long до типу int частина інформації загубиться, якщо значення типу long виявиться більше діапазону представлення чисел для типу int, оскільки старші розряди цього числового значення відкидаються. Коли ж значення з плаваючою точкою приводиться до целочисленному, то в результаті усічення втрачається дрібна частина цього числового значення. Так, якщо привласнити значення 1,23 цілочисельний змінної, то в результаті в ній залишиться лише ціла частина вихідного числа (1), а дробова його частина (0,23) буде втрачена. Давайте розглянемо приклад:
Зверніть увагу, що змінна i1 коректно перетворилася в тип byte, тому що її значення входить в діапазон цього типу даних. Перетворення змінної d в тип int повернуло цілу частину цього числа. Перетворення змінної i2 повернуло значення переповнення.
Результат:
Для того щоб перетворити до потрібного типу даних можна також використовувати клас Convert і його методи. Використання деяких методів показано в прикладі.
Результат: