C# Operator
C# Operators are symbols that tells the .NET CLR to perform specific operations on operands for producing the final result. C# has a number of standard operators, taken from C, C++ and Java. Most of these should be quite familiar to programmers.
The table below lists the standard operators. Note that when writing classes it is possible to change the default behaviour of some of these operators (ie to ‘overload’ the operator), although this should only be done where the resultant semantics makes sense. The below table also indicates which of the operators are overloadable.
Contents
- C# Primary Operators
- C# Unary Operators
- C# Type Operators
- C# Arithmetic Operators
- C# Relational And Logical Operators
- C# Operator Overloading
C# Primary Operators
Name | Syntax Example | Overloadable? |
Grouping | (a+b) |
No |
Member | A.B |
No |
Struct pointer member access | A->B |
No |
Method call | f(x) |
No |
Post increment | c++ |
Yes |
Post decrement | c-- |
Yes |
Constructor call | c = new Coord(); |
No |
Array stack allocation | int* c = stackalloc int[10] |
No |
Struct size retrieval | sizeof (int) |
No |
Arithmetic check on | checked {byte c = (byte) d;} |
No |
Arithmetic check off | unchecked {byte c = (byte) d;} |
No |
C# Unary Operators
Name | Syntax Example | Overloadable? |
Positive value | +10 |
Yes |
Negative value | -10 |
Yes |
Not | !(c==d) |
Yes |
Bitwise complement | ~(int x) |
Yes |
Pre increment | ++c |
Yes |
Pre decrement | --c |
Yes |
Type cast | (myType)c |
No |
Value at address | int* c = d; |
No |
Address value of | int* c = &d; |
No |
C# Type Operators
Name | Syntax Example | Overloadable? |
Type equality / compatibility | a is String |
No |
Type retrieval | typeof (int) |
No |
C# Arithmetic Operators
Name | Syntax Example | Overloadable? |
Multiplication | c*d |
Yes |
Division | c/d |
Yes |
Remainder | c%d |
Yes |
Addition | c+d |
Yes |
Subtraction | c-d |
Yes |
Shift bits right | c>>3 |
Yes |
Shift bits left | c<<3 |
Yes |
C# Relational And Logical Operators
Name | Syntax Example | Overloadable? |
Less than | c<d |
Yes |
Greater than | c>d |
Yes |
Less than or equal to | c<=d |
Yes |
Greater than or equal to | c>=d |
Yes |
Equality | c==d |
Yes |
Inequality | c!=d |
Yes |
Bitwise and | c&d |
Yes |
Bitwise or | c|d |
Yes |
Logical and | c&&d |
No |
Logical or | c||d |
No |
Conditional | int c=(d<10) ? 5:15 |
No |
C# Operator Overloading
To overload an operator in a class, one defines a method using the ‘operator’ keyword. For instance, the following code overloads the equality operator.
public static bool operator == (Value a, Value b)
{
return a.Int == b.Int
}
Where an operator is one of a logical pair, both operators should be overwritten if any one is. These pairs are the following:
== and !=
< and >
<= and >=
comments powered by Disqus