Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Перезагрузка операторов


Автор: Real 10.3.2008, 17:34
Чем отличаеться перегрузка бинарных операторов, чем перезагрузка унарных операторов?

Автор: kemiisto 10.3.2008, 18:38
Ну во первых, перегрузка, а не перезагрузка.

Перегрузка бинарных операторов отличается от таковой для унарных тем, что в последнем случае существует только один операнд:
Код

//Перезагрузка бинарного оператора -
public static MyClass operator - (MyClass operand1, MyClass operand2)
{
//...
}
 
Код

//Перезагрузка унарного оператора -
public static MyClass operator - (MyClass operand)
{
//...
}
   

Автор: eskaflone 10.3.2008, 18:48
Давай для начала договоримся что операторы мы перезагружать не будем, мы будем перегружать операции.

По существу перегрузка бинарных от унарных отличается тем что бинарные операции имеют 2 операнда, а унарные лишь 1, как не банально звучит.

например так:
Код

class MyCustom
{
    private int значение = 0;
    public int Значение
    {
        get {return значение;}
        set {значение = value;}
    }

    public static MyCustom operator - (MyCustom lhs, MyCustom rhs)
    {
        MyCustom MyCustom1 = new MyCustom();

        MyCustom1.Значение = lhs.Значение - rhs.Значение;
        return MyCustom1;
    }

    public static int operator - (MyCustom lhs, MyCustom rhs)
    {
        return lhs.Значение - rhs.Значение;
    }

    public static MyCustom operator - (MyCustom rhs)
    {
        MyCustom MyCustom1 = new MyCustom();

        MyCustom1.Значение = -rhs.Значение;
        return MyCustom1;
    }
}


Писал прямо в окне ответа, так что может в чём то ошибся.

Добавлено через 2 минуты и 45 секунд
оффтоп::

где то я уже это видел)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)