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 :
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);
| }
| } |
|