title: operator Overloading in C#
body: <pre><code>class Point
  {
      private int m_PointX;
      private int m_PointY;
  
      public Point(int x, int y)
      {
          m_PointX = x;
          m_PointY = y;
      }
  
      public static Point operator+(Point point1, Point point2)
      {
          Point P = new Point();
          P.X = point1.X + point2.X;
          P.Y = point1.Y + point2.Y;
  
          return P;
      }
  }
  </code></pre>
  
  <p>Example:</p>
  
  <pre><code>Point P1 = new Point(10,20);
  Point P2 = new Point(30,40)
  P1+P2; // operator overloading
  </code></pre>
  
  <ol>
  <li>Is it necessary to always declare the operator overloading function as static? What is the reason behind this?</li>
  <li>If I want to overload + to accept the expression like 2+P2, how to do this?</li>
  </ol>