Неявное приведение
Если преобразование безопасно, компилятор
выполняет его сам - в коде нет скобок
(тип). Так int расширяется до
long и double, а экземпляр
производного класса подставляется там, где
ждут базовый тип. Сужение - это уже
explicit или
cast.
Синтаксис
long wide = 5;
double num = 5;
Base item = new Derived();
Пример
Давайте положить int в long:
using System;
class Program
{
static void Main()
{
int num = 5;
long res = num;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Пример
Давайте положить int в double:
using System;
class Program
{
static void Main()
{
int num = 5;
double res = num;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Пример
Давайте присвоить производный класс переменной базового типа:
using System;
class Base { }
class Derived : Base { }
class Program
{
static void Main()
{
Base item = new Derived();
Console.WriteLine(item.GetType().Name);
}
}
Результат выполнения кода:
"Derived"
Смотрите также
-
приведение
explicit,
которое требует cast вручную -
оператор
implicit operator,
который задаёт своё неявное преобразование -
тип
int,
который неявно расширяется до long -
тип
double,
к которому неявно приводят int