'operator' keyword is used to overload a built-in operator or user defined conversions[straight from msdn].
A simple example.....
public class Money
{
public Money():this(0, "GBP")
{
}
public Money(double value):this(value, "GBP")
{ }
public Money(double value, string currency)
{
this.Value = value;
this.Currency = currency;
}
public double Value { get; set; }
public string Currency { get; set; }
public override string ToString()
{
return Value.ToString() + Currency;
}
public static Money operator +(Money arg1, Money arg2)
{
if (arg1.Currency.Equals(arg2.Currency))
{
return new Money(arg1.Value + arg2.Value, arg1.Currency);
}
return null;
}
public static Money operator -(Money arg1, Money arg2)
{
if (arg1.Currency.Equals(arg2.Currency))
{
return new Money(arg1.Value - arg2.Value, arg1.Currency);
}
return null;
}
public static explicit operator double(Money money)
{
return money.Value;
}
public static implicit operator Money(double value)
{
return new Money(value);
}
}
------------------------------------------------
static void Main(string[] args)
{
Money money1 = new Money(10.50);
Money money2 = new Money(21.50);
Money money3 = 23.50;
Console.WriteLine((money1 + 10.50).ToString());
Console.WriteLine((money1 + money2).ToString());
Console.WriteLine((money2 - money1).ToString());
Console.WriteLine((double)money1);
Console.WriteLine(money3);
}
outputs
21GBP
32GBP
11GBP
10.5
23.5GBP
Press any key to continue . . .
No comments:
Post a Comment