About
In this code snippet, we will take a look at operator overloading in C#.
Just like methods, operators can be overloaded too. In the code below we have an example with geometric shapes. If we use the + operator on two objects of GeomentricShapes we get an error. This happens because the compiler doesn’t know what is supposed to happen when the + operator is used on a GeomentricShapes object. We have to overload the + operator and write the code to be executed when two GeomentricShapes objects are added together.
Let’s look at the code example below to see how to overload operators.
Code:
using System;
namespace OperatorOverloading
{
class Program
{
static void Main(string[] args)
{
Square square1 = new Square(15, 20);
Square square2 = new Square(33, 8);
Console.WriteLine("Square 1 Area: " + square1.Area);
Console.WriteLine("Square 1 Circumference: " + square1.Circumference);
Console.WriteLine("");
Console.WriteLine("Square 2 Area: " + square2.Area);
Console.WriteLine("Square 2 Circumference: " + square2.Circumference);
Console.WriteLine("");
Console.WriteLine("");
GeometricShapes geoShape = square1 + square2;
Console.WriteLine("Total Area 1: " + geoShape.Area);
Console.WriteLine("Total Circumference 1: " + geoShape.Circumference);
Console.WriteLine("");
GeometricShapes geoShape2 = square1 - square2;
Console.WriteLine("Total Area 2: " + geoShape2.Area);
Console.WriteLine("Total Circumference 2: " + geoShape2.Circumference);
Console.WriteLine("");
Console.ReadLine();
}
}
class GeometricShapes
{
public double Area { get; set; }
public double Circumference { get; set; }
public GeometricShapes()
{
}
public GeometricShapes(double area, double circumference)
{
this.Area = area;
this.Circumference = circumference;
}
//Operator overloading.
public static GeometricShapes operator +(GeometricShapes shape1, GeometricShapes shape2)
{
//Here we define what happens when the + operator will be used on a GeometricShapes instance.
return new GeometricShapes((shape1.Area + shape2.Area), (shape1.Circumference + shape2.Circumference));
}
public static GeometricShapes operator -(GeometricShapes shape1, GeometricShapes shape2)
{
//Here we define what happens when the - operator will be used on a GeometricShapes instance.
return new GeometricShapes(Math.Abs(shape1.Area - shape2.Area), Math.Abs(shape1.Circumference - shape2.Circumference));
}
}
class Square : GeometricShapes
{
public double SideA { get; set; }
public double SideB { get; set; }
public Square(double sideA, double sideB)
{
this.SideA = sideA;
this.SideB = SideB;
this.Area = sideA * sideB;
this.Circumference = (sideA * 2) + (sideB * 2);
}
}
}





