dotSITE
Work in Murano Software. Учебник по C# Шаблоны проектирования
новости материалы решения форумы группы настройки/о проекте

Пользовательские преобразования типов

При разработке собственных типов часто бывает удобно преобразоывать их в другие. Например, если вы разрабатывается свой класс числа, использующий неограниченную точность, было бы удобно если бы при необходимости в выражениях он преобразовывался в double, float или int и, наоборот, float и компания преобразовывались в наш VeryCoolNumber.

В C# есть все средства для этого. Декларация подобных преобразований осуществляется с помощью оператора, у которого имя совпадает с именем типа, в который нужно преобразовывать, а в качестве параметра он берет значение преобразуемого типа. Также преобразования могут быть явными и неявными - то есть, нужно ли явно использовать опреатор преобразования () или преобразоване будет выполнено автоматически. Для указания типа используются ключевые слова explicit и implicit соответственно в декларации оператора.

В качестве примера приведем класс комплексного числа, который явно может быть преобразован к числу, являющемуся его вещественной частью и также из вещественного числа может быть преобразован в комплексное

class Complex
{
    public double Real;
    public double Imag;

    public Vector( double real, double imag )
    {
        Real = real;
        Imag = imag;
    }

    public static explicit operator Vector( double real )
    {
        return new Vector(real, 0);
    }

    public static explicit operator double( Vector vector )
    {
        return vector.real;
    }

    public static void Main()
    {
        Console.WriteLine("{0}", (double)(Vector)(((double)new Vector(3, 2)) + 4));
    }
}
    

<< Предыдущая Следующая >>

Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development