C#

C# Operator Overloading

Yazar - UĞUR

C # ‘deki çoğu operatör aşırı yüklenebilir(Overloading), yani özel eylemler için yeniden tanımlanabilirler.
Örneğin, özel bir sınıfta artı (+) operatörünün eylemini yeniden tanımlayabilirsiniz.
Yükseklik ve Genişlik özelliklerine sahip Box sınıfını düşünün:

class Box {
 public int Height {get; set;}
 public int Width {get; set;}
 public Box(int h, int w) {
 Height = h;
 Width = w;
 }
}
static void Main(string[] args) {
 Box b1 = new Box(14, 3);
 Box b2 = new Box(5, 7);
}

Bu iki Box nesnesini eklemek istiyoruz, bu da yeni, daha büyük bir Box’a neden olur.
Yani, temelde şu kodun çalışmasını isteriz:

Box b3 = b1 + b2;

B3 nesnesinin Yükseklik ve Genişlik özellikleri b1 ve b2 nesnelerinin karşılık gelen özelliklerinin toplamına eşit olmalıdır.
Bu operatör Overloading ile sağlanmaktadır.

Overloading operatörler, özel isimler içeren metotlardır. Burada, operator anahtar kelimesinden sonra gelen sembolü ele alınır.
Herhangi bir metoda benzer şekilde, Overloading  bir operatörün bir dönüş türü ve bir parametre listesi vardır.
Örneğin, Box sınıfımız için + operatörüne Overloading örneği :

public static Box operator+ (Box a, Box b) {
 int h = a.Height + b.Height;
 int w = a.Width + b.Width;
 Box res = new Box(h, w);
 return res;
}

Yukarıdaki yöntem, Overloading  bir + operatörünü  iki Box nesnesi parametresiyle tanımlar. Box nesnelerinin  Height ve Width özellikleri, parametresinin karşılık gelen özelliklerinin toplamına eşit yeni bir Box nesnesi döndürür.
Ayrıca, Overload  operatör static olmalıdır.
Hepsini bir araya koyarsak:

class Box {
 public int Height { get; set; }
 public int Width { get; set; }
 public Box(int h, int w) {
 Height = h;
 Width = w;
 }
 public static Box operator+(Box a, Box b) {
 int h = a.Height + b.Height;
 int w = a.Width + b.Width;
 Box res = new Box(h, w);
 return res;
 }
}
static void Main(string[] args) {
 Box b1 = new Box(14, 3);
 Box b2 = new Box(5, 7);
 Box b3 = b1 + b2;

 Console.WriteLine(b3.Height); //19
 Console.WriteLine(b3.Width); //10
}

Tüm aritmetik ve karşılaştırma operatörleri Overloading  işlemine tabi tutualabilir. Örneğin, Kutuları karşılaştıran ve bir boolean sonucu döndürecek kutular için büyüktür ve küçüktür operatörleri tanımlayabilirsiniz. Büyüktür operatörü Overload edilirken küçüktür operatörünün de tanımlanması gerektiğini unutmayın.

Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.