В унарных операторах тип операнда должен совпадать с типом класса.
Знак оператора, это например - (унарный минус).
Знак оператора, это например - (унарный минус).
Синтаксис:
public static тип_возврата operator знак_оператора(тип_параметра операнд) {
//операции
return значение;
}
public static тип_возврата operator знак_оператора(тип_параметра операнд) {
//операции
return значение;
}
знак оператора |
название оператора |
+ | унарный плюс |
- | унарный минус |
! | логическое отрицание НЕ |
~ | поразрядное НЕ |
++ | инкремент |
-- | декремент |
true | истина |
false | ложь |
Для примера возьмем унарный минус.
Main.cs
using
System;
class
One {
-
int
a;
-
int
b;
-
/*конструктор изначально присваивает нулевые значения, это понадобится для
-
переменной-объекта, которая будет создана в методе перегрузки*/
-
public
One() {
-
a = b = 0;
-
}
-
//обычный конструктор
-
public
One(
int
arg0,
int
arg1) {
-
a = arg0;
-
b = arg1;
-
}
-
//перегрузка унарного оператора -
-
public
static
One
operator
- (One obj) {
-
//создаем переменную-объект, которую будет возвращать этот метод
-
One Result =
new
One();
-
Result.a = -obj.a;
-
Result.b = -obj.b;
-
return
Result;
-
}
-
public
int
GetValueA() {
-
return
a;
-
}
-
public
int
GetValueB() {
-
return
b;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10, 20);
-
Console.WriteLine(-O.GetValueA());
-
Console.WriteLine(-O.GetValueB());
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
int
a;
-
int
b;
-
/*конструктор изначально присваивает нулевые значения, это понадобится для
-
переменной-объекта, которая будет создана в методе перегрузки*/
-
public
One() {
-
a = b = 0;
-
}
-
//обычный конструктор
-
public
One(
int
arg0,
int
arg1) {
-
a = arg0;
-
b = arg1;
-
}
-
//перегрузка унарного оператора -
-
public
static
One
operator
- (One obj) {
-
//создаем переменную-объект, которую будет возвращать этот метод
-
One Result =
new
One();
-
Result.a = -obj.a;
-
Result.b = -obj.b;
-
return
Result;
-
}
-
public
int
GetValueA() {
-
return
a;
-
}
-
public
int
GetValueB() {
-
return
b;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10, 20);
-
Console.WriteLine(-O.GetValueA());
-
Console.WriteLine(-O.GetValueB());
-
Console.ReadKey();
-
return
0;
-
}
}
-10
-20
-20