Professional Documents
Culture Documents
Operator Overloading
Operator Overloading
using System;
class demo
{
public int num1=0;
public string str1="";
public static demo operator+(demo d1,demo d2)
{
demo d3=new demo();
d3.num1=d1.num1+d2.num1;
d3.str1=d1.str1+d2.str1;
return d3;
}
}
class demo1
{
public static void Main()
{
demo d1=new demo();
d1.num1=10;
d1.str1="hello";
}
}
Overloading Unary Operator
using System;
class demo
{
public int num1,num2;
public static demo operator-(demo d1)
{
d1.num1= -d1.num1;
d1.num2= -d1.num2;
return d1;
}
}
class demo1{
public static void Main(){
demo d1=new demo();
d1.num1=-10;
d1.num2=20;
Console.WriteLine("Before call operator");
Console.WriteLine("value1 :"+d1.num1);
Console.WriteLine("value2 :"+d1.num2);
d1=-d1;
Console.WriteLine("After call operator");
Console.WriteLine("value1 :"+d1.num1);
Console.WriteLine("value2 :"+d1.num2);
}
}
Example 2:
using System; public static void Main()
class demo {
{ demo d1=new demo();
bool x=false; demo d2=new demo();
public void set(bool v) d1.set(true);
{ d2.set(false);
x=v; Console.WriteLine("value1 :"+!d1);
} Console.WriteLine("value1 :"+!d2);
public static bool operator !(demo d)
{ }
return !(d.x);
} }
Conversion Operator
using System;
class demo
{
int cnt;
public demo()
{
cnt=0;
}
public static demo operator ++(demo d1)
{
d1.cnt++;
return d1;
}
public static implicit operator int(demo d1)
{
return d1.cnt;
}
public static void Main()
{
demo d1=new demo();
long i;
d1++;
i=d1;
Console.WriteLine("value of i:"+i);
}
}
Conversion of a class type to CLS type(Explicit)
using System;
class demo
{
long cnt;
public demo()
{
cnt=0;
}
public static demo operator ++(demo d1)
{
d1.cnt++;
return d1;
}
public static explicit operator long(demo d1)
{
return d1.cnt;
}
public static void Main()
{
demo d1=new demo();
int i;
d1++;
i=(int)d1;
Console.WriteLine("value of i:"+i);
}
}
2.Conversion of one class type to other class
type(Explicit)
using System;
class Apartment
{
public string name;
public static explicit operator House(Apartment a)
{
House h1=new House();
h1.name=a.name;
return h1;
}
class House
{
public string name;
public static explicit operator Apartment(House h)
{
Apartment a1=new Apartment();
a1.name=h.name;
return a1;
}
}
class Program
{
static void Main()
{
House h = new House();
h.name = "Dharmnandan";
// Cast a House to an Apartment.
Apartment a = (Apartment)h;
// Apartment was converted from House.
Console.WriteLine(a.name);
}
}