Operator Overload C# Tutorial

using System;
struct MyType
{
    public MyType(int value)
    {
        this.value = value;
    }
    public override string ToString()
    {
        return(value.ToString());
    }
    public static MyType operator -(MyType roman)
    {
        return(new MyType(-roman.value));
    }
    public static MyType operator +( MyType roman1, MyType roman2)
    {
        return(new MyType(roman1.value + roman2.value));
    }
    
    public static MyType operator ++(MyType roman)
    {
        return(new MyType(roman.value + 1));
    }
    int value;
}
class MainClass
{
    public static void Main()
    {
        MyType    roman1 = new MyType(12);
        MyType    roman2 = new MyType(125);
        
        Console.WriteLine("Increment: {0}", roman1++);
        
        Console.WriteLine("Addition: {0}", roman1 + roman2);
        Console.WriteLine("Addition: {0}", roman1++ + roman2++);
        
    }
}
Increment: 12
Increment: 13
Addition: 139