Skip to content

SatSargsyan/Operator_Overloading

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Operator Overloading

####Most operators in C# can be overloaded, meaning they can be redefined for custom actions. ####For example, you can redefine the action of the plus (+) operator in a custom class. Consider the Box class that has Height and Width properties:

class Box {
  public int Height {get; set;}
  public int Width {get; set;}
  public Box(int h, int w) {
    Height = h;
    Width = w;
  }
}
static void Main(string[] args) {
  Box b1 = new Box(14, 3);
  Box b2 = new Box(5, 7);
}

####We would like to add these two Box objects, which would result in a new, bigger Box. So, basically, we would like the following code to work:

 Box b3 = b1 + b2;

####The Height and Width properties of object b3 should be equal to the sum of the corresponding properties of the b1 and b2 objects.

####Overloaded operators are methods with special names, where the keyword operator is followed by the symbol for the operator being defined. ####Similar to any other method, an overloaded operator has a return type and a parameter list. ####For example, for our Box class, we overload the + operator:

public static Box operator+ (Box a, Box b) {
  int h = a.Height + b.Height;
  int w = a.Width + b.Width;
  Box res = new Box(h, w);
  return res;
}

####The method above defines an overloaded operator + with two Box object parameters and returning a new Box object whose Height and Width properties equal the sum of its parameter's corresponding properties. ###Additionally, the overloaded operator must be static. ####Putting it all together:

class Box {
  public int Height { get; set; }
  public int Width { get; set; }
  public Box(int h, int w) {
    Height = h;
    Width = w;
  }
  public static Box operator+(Box a, Box b) {
    int h = a.Height + b.Height;
    int w = a.Width + b.Width;
    Box res = new Box(h, w);
    return res;
  }
}
static void Main(string[] args) {
  Box b1 = new Box(14, 3);
  Box b2 = new Box(5, 7);
  Box b3 = b1 + b2;

  Console.WriteLine(b3.Height); //19
  Console.WriteLine(b3.Width); //10
}

####All arithmetic and comparison operators can be overloaded. For instance, you could define greater than and less than operators for the boxes that would compare the Boxes and return a boolean result. Just keep in mind that when overloading the greater than operator, the less than operator should also be defined.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages