В унарных операторах тип операнда должен совпадать с типом класса.
Знак оператора, это например - (унарный минус).
Знак оператора, это например - (унарный минус).
Синтаксис:
public static тип_возврата operator знак_оператора(тип_параметра операнд) {
//операции
return значение;
}
public static тип_возврата operator знак_оператора(тип_параметра операнд) {
//операции
return значение;
}
знак оператора |
название оператора |
| + | унарный плюс |
| - | унарный минус |
| ! | логическое отрицание НЕ |
| ~ | поразрядное НЕ |
| ++ | инкремент |
| -- | декремент |
| true | истина |
| false | ложь |
Для примера возьмем унарный минус.
Main.cs
usingSystem;classOne {-
inta; -
intb; -
/*конструктор изначально присваивает нулевые значения, это понадобится для -
переменной-объекта, которая будет создана в методе перегрузки*/ -
publicOne() { -
a = b = 0; -
} -
//обычный конструктор -
publicOne(intarg0,intarg1) { -
a = arg0; -
b = arg1; -
} -
//перегрузка унарного оператора - -
publicstaticOneoperator- (One obj) { -
//создаем переменную-объект, которую будет возвращать этот метод -
One Result =newOne(); -
Result.a = -obj.a; -
Result.b = -obj.b; -
returnResult; -
} -
publicintGetValueA() { -
returna; -
} -
publicintGetValueB() { -
returnb; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10, 20); -
Console.WriteLine(-O.GetValueA()); -
Console.WriteLine(-O.GetValueB()); -
Console.ReadKey(); -
return0; -
} }
usingSystem;classOne {-
inta; -
intb; -
/*конструктор изначально присваивает нулевые значения, это понадобится для -
переменной-объекта, которая будет создана в методе перегрузки*/ -
publicOne() { -
a = b = 0; -
} -
//обычный конструктор -
publicOne(intarg0,intarg1) { -
a = arg0; -
b = arg1; -
} -
//перегрузка унарного оператора - -
publicstaticOneoperator- (One obj) { -
//создаем переменную-объект, которую будет возвращать этот метод -
One Result =newOne(); -
Result.a = -obj.a; -
Result.b = -obj.b; -
returnResult; -
} -
publicintGetValueA() { -
returna; -
} -
publicintGetValueB() { -
returnb; -
} }classProgram {-
publicstaticintMain() { -
One O =newOne(10, 20); -
Console.WriteLine(-O.GetValueA()); -
Console.WriteLine(-O.GetValueB()); -
Console.ReadKey(); -
return0; -
} }
-10
-20
-20