Oluşturmuş olduğumuz iki int değişkeni + operatörü ile işleme soktuğumuzda C# derleyicisinin bunları topladığını ya da iki string ifadeyi + operatörü ile işleme soktuğumuzda C# derleyicisinin bunları birleştirdiğini biliyoruz. Dikkat ettiyseniz C# derleyicisi her class için aslında operatörleri farklı bir şekilde çalıştırabilme imkanına sahiptir. Bu duruma işte Operatörlere aşırı yüklenme denir. Bu yazımızda Operatörlere Aşırı Yüklenme kavramı üzerinde duracağız ve gerçek dünyada işimize yaramayacak ama konunun anlaşılması için yararlı olacak bir örnek yapacağız. İyi okumalar...
Öncelikle bomba bir haberle başlayalım JAVA'da operatörlere aşırı yüklenme yoktur. Aklınıza hemen o zaman C#'da bu gerekli midir sorusu gelmiş olabilir. Nesne yönelimli programlama konseptinde var olan bir kavramdır operatörlere aşırı yüklenme bundan dolayı her zaman gerekli olacak die bir şey yok ancak sizin daha düzgün projeler çıkarmanızı ve daha az kod yazmanızı sağlayacaktır, kısa cevap ise gereklidir!
C# ile projeler geliştirirken birçok operatöre aşırı yükleme yapabiliriz. Aşağıdakiler hariç:
- new
- as
- is
- sizeof
- typdef
- =
- ?
- ()
- []
- ||
- &&
Şimdi aşağıdaki koda bakalım ve konuyu hızlıca anlayalım...
using System;
namespace ConsoleApp2
{
class Matematik
{
public int Sayi { get; set; }
public Matematik(int sayi)
{
Sayi = sayi;
}
public static int operator +(Matematik sayi1, Matematik sayi2)
{
int Sayi1 = sayi1.Sayi;
int Sayi2 = sayi2.Sayi;
int hesap = Sayi1 * Sayi1 + Sayi2 * Sayi2;
Matematik sayi = new Matematik(hesap);
return sayi.Sayi;
}
}
class Program
{
public static void Main()
{
var a = new Matematik(5);
var b = new Matematik(10);
Console.WriteLine(a+b);
}
}
}
Cevap:
125
Yukarıdaki kod kısmında dikkat etmemiz gereken kısımlar:
- Operatör metotlarının tipleri void olamaz.
- Operatör metotları static olmak zorundadır.
İlk Yorumu Siz Yapın