OPERATORLERİN AŞIRI YÜKLENMESİ

aşırı yükleme nedir öncelikle onu açıklayalım  örneğin c gibi dillerde her işlem için ayrı metodlar mevcuttu farklı isimlerde c# ise bu fonksiyonları tek bir ad altında toplayarak aldıgı parametlere göre gerekli fonksiyonu çağırıyordu aşağıdaki resimde gördüğümüz gibi drawpolygon metodu hem point dizisi hemde pointf dizisi alıyor bu c# ın metodları aşırı yüklemeyi desteklemsi ile mümkün oluyor aksi halde farklı bir isimde kullanacaktık

C# OPERATOR TANIMLAMA

public static operatorum operator +(operatorum a, operatorum b)

{

return new operatorum (a.x+b.x,b.y+a.y);

}
public static operatorum operator -(operatorum a, operatorum b)

{

return new operatorum(a.x - b.x, a.y - b.y);

}
  • Yapısı public static [kurucu fonksiyon ile aynı isim] operator anahtar kelimesi kullanacağımız operator ve alacağı parametreler ve return ile geri döndüreceğimiz deger
operatorum yeni = new operatorum(2, 3);

operatorum yeni2 = new operatorum(1,2);

operatorum yeni3 = new operatorum(1, 2);

operatorum uc = new operatorum();

uc = yeni + yeni2+yeni3-yeni-yeni2-yeni3;

MessageBox.Show(uc.x.ToString()+uc.y.ToString());
  • Program nesnelerimiz üzerinde artık toplama ve çıkartma işlemini gerçekleştirebiliriz.

istersek – operatoru ile class içerisinde yeni bir nesne daha oluşturarak verdiğimiz degerlerin negatifini alabiliriz.

operatorum uc = new operatorum();

uc.x=-a.x;
uc.y=-a.y;
return uc;

c# da arttırma ve azaltma operatörü olarak ++ , — kullanılır. Fakat ufak bir nokta var biz hem i++ hemde ++i şeklinde kullanabiliyorduk peki operator nasıl tanımlayaacğız ?

public static operatorum operator ++(operatorum a)

{

a.x++;

a.y++;

return a;

}

tanımlama bu şekilde

operatorum yeni = new operatorum(2,3);

yeni.x++;

MessageBox.Show(yeni.x.ToString());

programın çıktısı 3 olacaktır gelelim diger kullanım ++yeni.x kullanmamız gerekecek

Şimdi operatorlerin kullanımı ile ilgili ayrıntılı bir program yazalım;