Operators
Operator can be used for both predifined and userdefined type, as long as it's possible to overload. You can see list operator here.
Here's some restriction of operator overloading:
See following example:
After compiling and running the code you will find following in the display:
Here's some restriction of operator overloading:
- Operator overloading is available only for classes and structs.
-
You can overload an operator x for use with your class or struct by declaring a method named operator x that implements the
behavior (for example, operator +, operator - , and so on).
- The overload methods for unary operators take a single parameter of the class or struct type.
- The overload methods for binary operators take two parameters, at least one of which must be of the class or struct type.
-
The declaration of an operator overload method requires the following:
- The declaration must use both the static and public modifiers.
- The operator must be a member of the class or struct for which it is an operator.
public static [Userdefined Type : as return type] operator [operator symbol]([Operand List])
{
[Operation's statements]
}
See following example:
class myClass { public int intField; public float floatField; public static myClass operator +(myClass op1, myClass op2) //overloading additive + { op1.intField += op2.intField; op1.floatField += op2.floatField; return op1; } public static myClass operator +(myClass op1) //overloading unary + { op1.intField = + op1.intField; op1.floatField = + op1.floatField; return op1; } public static myClass operator ++(myClass op1) //overloading increment ++ { ++op1.intField; ++op1.floatField; return op1; } } class Program { static void Main(string[] args) { myClass object1 = new myClass() { intField = -7, floatField = 4.5F }; myClass object2 = new myClass() { intField = 10, floatField = 7.8F }; Console.WriteLine("object1 intField = " + object1.intField + " floatField = " + object1.floatField); Console.WriteLine("object2 intField = " + object2.intField + " floatField = " + object2.floatField); //calling unary + object1 = +object1; Console.WriteLine("object1 intField = " + object1.intField + " floatField = " + object1.floatField); //calling additive + object1 += object2; Console.WriteLine("object1 intField = " + object1.intField + " floatField = " + object1.floatField); //calling increment ++ ++object1; Console.WriteLine("object1 intField = " + object1.intField + " floatField = " + object1.floatField); } }
After compiling and running the code you will find following in the display:
object1 intField = -7 floatField = 4,5
object2 intField = 10 floatField = 7,8
object1 intField = -7 floatField = 4,5
object1 intField = 3 floatField = 12,3
object1 intField = 4 floatField = 13,3
object2 intField = 10 floatField = 7,8
object1 intField = -7 floatField = 4,5
object1 intField = 3 floatField = 12,3
object1 intField = 4 floatField = 13,3
0 comments:
Post a Comment