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;