C# dilinde “operatör aşırı yükleme” (operator overloading), bir sınıfın özel işlemleri ve operatörleri özelleştirmek amacıyla kullanılan bir nesne yönelimli programlama kavramıdır. C# dilinde, bazı temel operatörlerin sınıf türlerine uygulanabilirliği sağlanır ve bu operatörlerin davranışlarını sınıflarınıza özgü şekillerde tanımlamanıza olanak tanır.
Operatör aşırı yüklemesi, aşağıdaki operatörler için özel davranışları tanımlamanıza olanak tanır:
- Aritmetik operatörler: +, -, *, /, % vb.
- Karşılaştırma operatörleri: ==, !=, <, >, <=, >= vb.
- Mantıksal operatörler: &&, ||, ! vb.
- Bitwise operatörler: &, |, ^, ~, <<, >> vb.
- Atama operatörleri: =, +=, -=, *=, /=, %= vb.
Operatör aşırı yükleme, sınıfınızın türünün özel gereksinimlerine veya iş mantığına uyan bir şekilde bu operatörleri kullanmanıza olanak tanır. Örneğin çalışan adlı bir sınıfımız olsun ve o sınıf üzerinden iki adet nesne üretelim.
public class Calisan
{
string calisanAdi;
int yaptigiSatis;
public Calisan(string calisanAdi, int yaptigiSatis)
{
this.calisanAdi = calisanAdi;
this.yaptigiSatis = yaptigiSatis;
}
}
Yukarıda ki sınıfımız üzerinden nesne oluşturalım ve o nesneler üzerinden bir toplama işlemi gerçekleştirelim.
internal class Program
{
static void Main(string[] args)
{
Calisan calisan1 = new Calisan("Fatih", 10);
Calisan calisan2 = new Calisan("Beyazıt", 5);
Calisan toplamSatis = calisan1 + calisan2;
}
}
Yukarıda ki kodu yazdığınızda bir derleme zamanı hatası alırsınız. Bunun sebebi + operatörünün bu iki tip üzerinde ne yapacağını bilmemesinden kaynaklanır. Gelin şimdi + operatörünü aşırı yükleyelim ve artık ne yapması gerektiğini kendisine öğretelim.
public class Calisan
{
string calisanAdi;
int yaptigiSatis;
public Calisan(string calisanAdi, int yaptigiSatis)
{
this.calisanAdi = calisanAdi;
this.yaptigiSatis = yaptigiSatis;
}
public override string ToString()
{
return this.calisanAdi + " " + this.yaptigiSatis + " adet sipariş";
}
public static Calisan operator +(Calisan clsn1, Calisan clsn2)
{
int toplamSatis = clsn1.yaptigiSatis + clsn2.yaptigiSatis;
return new Calisan("ToplamSatis", toplamSatis);
}
}
Program.cs
static void Main(string[] args)
{
Calisan calisan1 = new Calisan("Fatih", 10);
Calisan calisan2 = new Calisan("Beyazıt", 5);
Calisan toplamSatis = calisan1 + calisan2;
Console.WriteLine(toplamSatis);
}
Sonuç:
ToplamSatis 15 adet sipariş