Merhaba,
Bu yazımda bir çok dilde bulunan operator overloading özelliğinin C# ile nasıl yapılabileceğini anlatacağım. Operator overloading(operatörleri aşırı yükleme) metotları aşırı yüklemeye benzer bir yapıya sahiptir. Operatörleri aşırı yükleme ise C# ile kullandığımız ,-,*,/,%, ,– gibi operatörlerin bizim oluşturduğumuz class içinde nasıl davranacağını belirleyebildiğimiz bir kavramdır. Örneğin aşağıdaki kod bloğuna inceleyelim :

1
int a = 10+5;

Burada iki adet int sayıyı topladık. Yani bizim burada yapacığımız iş operatörünün bizim yazdığımız class’ta daha farklı bir iş gerçekleştirebilmesidir. Ben burada örnek olarak C#’ta bulunmayan bir type’ın C#’a optimize edilmiş bir biçimini yazacağım. Bir karmaşık sayı sınıfı yazarak bunu programlarımızda nasıl kullanabileceğimizi anlatacağım. Örnek olarak aşağıdaki gibi bir class yazalım :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class KarmasikSayi
{
private double reel { get; set; }
private double sanal { get; set; }
public KarmasikSayi(double reel, double sanal)
{
this.reel = reel;
this.sanal = sanal;
}
//Toplama operator overloading
public static KarmasikSayi operator +(KarmasikSayi sayi1, KarmasikSayi sayi2)
{
return new KarmasikSayi(sayi1.reel + sayi2.reel, sayi1.sanal + sayi2.sanal);
}
//Çıkarma operator overloading
public static KarmasikSayi operator -(KarmasikSayi sayi1, KarmasikSayi sayi2)
{
return new KarmasikSayi(sayi1.reel - sayi2.reel, sayi1.sanal - sayi2.sanal);
}
public override string ToString()
{
return String.Format("{0} {1}i", reel, sanal);
}
}