operator C# with Example



operator C# with Example

Most of the built-in operators (including conversion operators) can be overloaded by using the operator keyword 
along with the public and static modifiers. 
The operators comes in three forms: unary operators, binary operators and conversion operators. 
Unary and binary operators requires at least one parameter of same type as the containing type, and some 
requires a complementary matching operator. 
Conversion operators must convert to or from the enclosing type. 
public struct Vector32 
{ 
public Vector32(int x, int y) 
{ 
X = x; 
Y = y; 
} 
public int X { get; } 
public int Y { get; } 
public static bool operator ==(Vector32 left, Vector32 right) 
=> left.X == right.X && left.Y == right.Y; 
public static bool operator !=(Vector32 left, Vector32 right) 
=> !(left == right); 
public static Vector32 operator +(Vector32 left, Vector32 right) 
=> new Vector32(left.X + right.X, left.Y + right.Y); 
public static Vector32 operator +(Vector32 left, int right) 
=> new Vector32(left.X + right, left.Y + right); 
public static Vector32 operator +(int left, Vector32 right) 
=> right + left; 
public static Vector32 operator -(Vector32 left, Vector32 right) 
=> new Vector32(left.X - right.X, left.Y - right.Y); 
public static Vector32 operator -(Vector32 left, int right) 
=> new Vector32(left.X - right, left.Y - right); 
public static Vector32 operator -(int left, Vector32 right) 
=> right - left; 
public static implicit operator Vector64(Vector32 vector) 
=> new Vector64(vector.X, vector.Y); 
public override string ToString() => $"{{{X}, {Y}}}"; 
} 
 

public struct Vector64 
{ 
public Vector64(long x, long y) 
{ 
X = x; 
Y = y; 
} 
public long X { get; } 
public long Y { get; } 
public override string ToString() => $"{{{X}, {Y}}}"; 
} 
Example 
var vector1 = new Vector32(15, 39); 
var vector2 = new Vector32(87, 64); 
Console.WriteLine(vector1 == vector2); // false 
Console.WriteLine(vector1 != vector2); // true 
Console.WriteLine(vector1 + vector2); // {102, 103} 
Console.WriteLine(vector1 - vector2); // {-72, -25} 

0 Comment's

Comment Form