illustrates operator overloading : Operator Overloading « Class Interface « C# / C Sharp






illustrates operator overloading

illustrates operator overloading
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example7_12.cs illustrates operator overloading
*/

using System;


// declare the Rectangle class
class Rectangle
{

  // declare the fields
  public int width;
  public int height;

  // define constructor
  public Rectangle(int width, int height)
  {
    this.width = width;
    this.height = height;
  }

  // override the ToString() method
  public override string ToString()
  {
    return "width = " + width + ", height = " + height;
  }

  // overload the == operator
  public static bool operator ==(Rectangle lhs, Rectangle rhs)
  {
    Console.WriteLine("In operator ==");
    if (lhs.width == rhs.width && lhs.height == rhs.height)
    {
      return true;
    }
    else
    {
      return false;
    }
  }

  // overload the != operator
  public static bool operator !=(Rectangle lhs, Rectangle rhs)
  {
    Console.WriteLine("In operator !=");
    return !(lhs==rhs);
  }

  // override the Equals() method
  public override bool Equals(object obj)
  {
    Console.WriteLine("In Equals()");
    if (!(obj is Rectangle))
    {
      return false;
    }
    else
    {
      return this == (Rectangle) obj;
    }
  }

  // overload the + operator
  public static Rectangle operator +(Rectangle lhs, Rectangle rhs)
  {
    Console.WriteLine("In operator +");
    return new Rectangle(lhs.width + rhs.width, lhs.height + rhs.height);
  }

}


public class Example7_12
{

  public static void Main()
  {

    // create Rectangle objects
    Rectangle myRectangle = new Rectangle(1, 4);
    Console.WriteLine("myRectangle: " + myRectangle);
    Rectangle myRectangle2 = new Rectangle(1, 4);
    Console.WriteLine("myRectangle2: " + myRectangle2);

    if (myRectangle == myRectangle2)
    {
      Console.WriteLine("myRectangle is equal to myRectangle2");
    }
    else
    {
      Console.WriteLine("myRectangle is not equal to myRectangle2");
    }

    Rectangle myRectangle3 = myRectangle + myRectangle2;
    Console.WriteLine("myRectangle3: " + myRectangle3);

  }

}


           
       








Related examples in the same category

1.An example of operator overloadingAn example of operator overloading
2.More operator overloadingMore operator overloading
3.Overload addition for object + object, and for object + intOverload addition for object + object, and 
   for object + int
4.Overload the + for object + object, object + int, and int + objectOverload the + for object + object, 
   object + int, and int + object
5.Overload shift operatorOverload shift operator
6.Overload true and fase for ThreeDOverload true and fase for ThreeD
7.A better way to overload !, | and & for ThreeD. This version automatically enables the && and || operatorsA better way to overload !, | and & for ThreeD. 
   This version automatically enables the && and || operators
8.Demonstrates overloading the addition operator for two class objectsDemonstrates overloading the addition operator for two class objects
9.overloaded operator + takes two fractionsoverloaded operator + takes two fractions
10.Overloaded operator: whether two Fractions are equalOverloaded operator: whether two Fractions are equal
11.Overload != operatorOverload != operator
12.Operator Overloading:An ExampleOperator Overloading:An Example
13.Sorting and Searching:Overloading Relational OperatorsSorting and Searching:Overloading Relational Operators