Приведем сразу пример приведения типов в 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;
Нельзя осуществлять приведение типов между классами, один из которых явно или неявно является производным от другого. Приведение типа может быть объявлено внутри любого типа-источника, либо типа-приемника.
Всегда можно неявно привести производный класс к базовому, а базовый явно к производному. Ссылка на базовый тип может ссылаться как на объекты базового класса, так и на объекты производные от него.
Читать далее...