Merhaba,Bu yazımda bir çok dilde bulunan operator overloading özelliğinin C# ile nasıl yapılabileceğini anlatacağım. Operator overloading(operatörleri aşırı yükleme) metotları aşırı yüklemeye benzer bir yapıya sahiptir. Operatörleri aşırı yükleme ise C# ile kullandığımız ,-,*,/,%, ,– gibi operatörlerin bizim oluşturduğumuz class içinde nasıl davranacağını belirleyebildiğimiz bir kavramdır. Örneğin aşağıdaki kod bloğuna inceleyelim :
Burada iki adet int sayıyı topladık. Yani bizim burada yapacığımız iş operatörünün bizim yazdığımız class’ta daha farklı bir iş gerçekleştirebilmesidir. Ben burada örnek olarak C#’ta bulunmayan bir type’ın C#’a optimize edilmiş bir biçimini yazacağım. Bir karmaşık sayı sınıfı yazarak bunu programlarımızda nasıl kullanabileceğimizi anlatacağım. Örnek olarak aşağıdaki gibi bir class yazalım :
Bu class verilen iki adet double sayıyı yapıcı metot ile(KarmasikSayi(reel,sanal)) reel ve sanal isimli özelliğime atacayacaklar. Daha sonra bu iki sayıyı toplayığ ekrana uygun formatta verecek. Öncelikle bu sınıfı nasıl kullanabileceğimizi yazayım daha sonra sınıfımızın kod bloklarını açıklayacağım :
İlk önce s1 ve s2 isimli iki adet KarmasikSayi tipli birer nesne oluşturduk ve parametre olarak iki adet sayı gönderdik. Bu gönderdiğimiz sayılar KarmasikSayi sınıfının altındaki reel ve sanal özelliğine yazılmıştır. Daha sonra ben s1 s2 kısmında KarmasikSayi sınıfımda bulunan public static KarmasikSayi operator () metodunun çalışmasını sağlıyorum. Operator overloading’de önemli kurallar vardır. Bunlardan birinci yazılan metodun public ve static özelliklere sahip olması gerekmektedir. Genel olarak operatör tanımlama aşağıdaki gibidir :
Burada tip olarak class tipi ve operator tipi olarakta +,-,*,/,++,–,% gibi operatorlerdir.