Using System;
Using System. Collections. Generic;
Using System. Linq;
Using System. Text;
Namespace ConsoleApplication1
{
Class MyCls
{
Public int X
{
Get;
Set;
}
Public int Y
{
Get;
Set;
}
Public override string ToString ()
{
Return string. Format ("X = {0}, Y = {1}", X, Y );
}
Public override bool Equals (object obj)
{
MyCls a = obj as MyCls;
Return a. X = this. X & a. Y = this. Y;
}
Public override int GetHashCode ()
{
Return X * Y;
}
Public static MyCls operator + (MyCls a, MyCls B)
{
Return new MyCls () {X = a. X + B. X, Y = a. Y + B. Y };
}
Public static MyCls operator-(MyCls a, MyCls B)
{
Return new MyCls {X = a. X-B. X, Y = a. Y-B. Y };
}
Public static MyCls operator ++ (MyCls)
{
Return new MyCls () {X = a. X ++, Y = a. Y ++ };
}
Public static MyCls operator -- (MyCls)
{
Return new MyCls () {X = a. X --, Y = a. Y --};
}
Public static bool operator = (MyCls a, MyCls B)
{
Return a. X = B. X & a. Y = B. Y;
}
Public static bool operator! = (MyCls a, MyCls B)
{
Return a. X! = B. X & a. Y! = B. Y;
}
Public static void Main ()
{
MyCls a = new MyCls {X = 1, Y = 1 };
MyCls B = new MyCls {X = 2, Y = 2 };
Console. WriteLine (a + B );
Console. WriteLine (B-);
Console. WriteLine (B ++ );
Console. WriteLine (--);
Console. WriteLine (a ++ = B );
Console. WriteLine (! = B --);
Console. ReadLine ();
}
}
}
Output result:
X = 3, Y = 3
X = 1, Y = 1
X = 3, Y = 3
X = 0, Y = 0
True
False