Приведем сразу пример приведения типов в C#:
public struct Currency
{ // неявное приведение типа
public static implicit operator float(Currency value)
{
return value.Grn + (value.Kop / 100.0f);
}
// явное приведение типа
public static explicit operator Currency(float value)
{
checked {
uint Grn = (uint)value;
ushort Kop = (ushort)((value - Grn) * 100);
return new Currency(Grn, Kop); }
}
} ...
// неявное преобразование
Currency balance = new Currency(10,50); // 10 грн. 50 коп.
float D = balance; // нужно чтобы D было присвоено 10.50
// явное преобразование
float money = 45.63f;
Currency myMoney = (Currency)money;
Нельзя осуществлять приведение типов между классами, один из которых явно или неявно является производным от другого. Приведение типа может быть объявлено внутри любого типа-источника, либо типа-приемника.
Всегда можно неявно привести производный класс к базовому, а базовый явно к производному. Ссылка на базовый тип может ссылаться как на объекты базового класса, так и на объекты производные от него.
Читать далее...