Перетворення типів

У С# існують два варіанти приведення типів: явне приведення і неявне.

У С# існують два варіанти перетворення типів: явне приведення і неявне.

Неявне перетворення

Як і в інших мовах програмування, існує неявне приведення типів. Так, наприклад, якщо ви використовуєте вираз, який має тип int, а результат його ви хочете помістити в змінну типу double, то програма автоматично розширить вашу змінну до необхідного розміру, причому самі дані не будуть втрачені: 

using System;
class CastDemo 
{
    static void Main() 
    {
        int iValue=5; 
        double dValue; 
        dValue=iValue; // dValue набуде значення 5 
        Console.WriteLine ("dValue ={0} ",dValue);
    }
}

Явне перетворення

В деяких випадках ви можете спробувати присвоїти змінній більшого розміру змінну, що має тип, який займає менший розмір. Так, наприклад, присвоїти змінній типу int змінну типу double. В цьому випадку компілятор видасть помилку, якщо ви явно не вкажете тип, до якого ви хочете перетворити вашу змінну або вираз. Приклад нижче працювати не буде, оскільки неявне приведення типу double до типу int не може бути виконане.

using System;
class CastDemo2 
{ 
    static void Main() 
    { 
        double nVar1=6.489; 
        int nVar2=nVar1; 
        Console.WriteLine("nVar2={0}",nVar2); 
        } 
    } 
}

Однак існує також явне перетворення типів. Приклад нижче працювати буде, але в цьому випадку ви не застраховані від втрати даних.

using System;
class CastDemo3
{ 
    static void Main() 
    { 
        double nVar1=6.489; 
        int nVar2=(int)nVar1; 
        Console.WriteLine("nVar2={0}",nVar2); 
        } 
    } 
}

Результатом роботи цієї програми буде число 6. Таким чином, частина даних втрачена. Можна використовувати оператор checked для перевірки цілісності даних в змінних, і, у разі втрати інформації, викидуватиметься виключення.

using System;
class CastDemo4 
{ 
    static void Main() 
    { 
        double nVar1=6.489; 
        checked { 
            int nVar2=(int) nVar1; 
            Console.WriteLine("nVar2={0}",nVar2); 
        } 
    } 
}

 

Додати коментар

Loading