Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 80 стр.

UptoLike

Составители: 

80
4.9. Определение преобразования типов
Для класса можно описать порядок выполнения неявного или яв-
ного преобразования объектов данного класса в объекты других типов
или объектов других типов в объекты данного класса.
Для описания неявного (по умолчанию) преобразования, которое
не требует выполнения кастинга (указания требуемого типа в скобках)
необходимо в описание класса включить статический метод с атрибу-
том implicit и именем, состоящим из ключевого слова operator,
после которого стоит название типа, в который будет выполняться пре-
образование. В качестве параметра данного метода описывается пере-
менная того типа, который будет преобразовываться. Например:
// в описании Point неявное преобразование в тип int
public static implicit operator int(Point p)
{ int n; n = p.x; return n;}
. . .
Point p = new Point(5,6);
int a;
a = p + 2;
Описание явного преобразования выполняется аналогично, но пе-
ред статическим методом нужно задавать атрибут explicit. Пример
описания явного преобразования приведен ниже:
// в классе Fahrenheit явное преобразование в Celsius
public static explicit operator Celsius(Fahrenheit f) {
return new Celsius((5.0f/9.0f)*(f.degrees-32));
}
//...
Fahrenheit f = new Fahrenheit(100.0f);
Celsius c = (Celsius)f;
Рис. 4.1. Схема наследования классов.