Operator Overloading for your own class : operator overload « Operator Overload « C# / CSharp 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("Increment: {0}", roman1++);
        
        Console.WriteLine("Addition: {0}", roman1 + roman2);
        Console.WriteLine("Addition: {0}", roman1++ + roman2++);
        
    }
}
Increment: 12
Increment: 13
Addition: 139
Addition: 139








8.1.operator overload
8.1.1.Valid Overloadable Operators
8.1.2.Operator Overloading: A Complex Number Class
8.1.3.Operator Overloading for your own class
8.1.4.A better way to overload !, |, and & for TwoDimension.