C# -- Can we call the overload operator as ClassName.operator+(p1, p2)?
<p>Given the following code, I try to implement the </p>

<pre><code>public static Point operator +(int x, Point p1)
</code></pre>

<p>by reusing the </p>

<pre><code>public static Point operator +(Point p1, int x)
</code></pre>

<p>but it doesn't work. Is it true that we cannot do this in C#?</p>

<p>thank you</p>

<pre><code>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Point
    {
        public int X { get; set; }
        public int Y { get; set; }

        public Point() { }
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }

        public override string ToString()
        {
            return string.Format("x: {0}, y: {1}", X, Y);
        }

        public static Point operator+(Point p1, Point p2)
        {
            return new Point(p1.X + p2.X, p1.Y + p2.Y);
        }

        public static Point operator +(Point p1, int x)
        {
            return new Point(p1.X+x, p1.Y+x);
        }

        public static Point operator +(int x, Point p1)
        {
            return Point.operator+(p1, x); // **doesn't compile** 
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Point p1 = new Point(1, 2);
            Point p2 = new Point { X = 3, Y = 4 };

            Console.WriteLine("p1: {0}", p2);
            Console.WriteLine("p2: {0}", p1);

            Console.WriteLine("p1+p2: {0}", p1+p2);

            Console.WriteLine("p1+10: {0}", p1 + 10);
            Console.WriteLine("p1+10: {0}", 10 + p1);
            Console.ReadLine();
        }
    }
}
</code></pre>

<p>// updated for the compiler errors //</p>

<pre><code>Error   1   Invalid expression term 'operator'  C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  26  ConsoleApplication2
Error   2   Identifier expected; 'operator' is a keyword    C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  26  ConsoleApplication2
Error   3   Invalid expression term ',' C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  38  ConsoleApplication2
Error   4   ) expected  C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  38  ConsoleApplication2
Error   5   ; expected  C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  40  ConsoleApplication2
Error   6   Invalid expression term ')' C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  41  ConsoleApplication2
Error   7   ; expected  C:\temp\ConsoleApplication2\ConsoleApplication2\Program.cs  37  41  ConsoleApplication2
</code></pre>
