İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

C#.Net'te Operator Overloading

Operator Overloding Nedir ?

C#.Net dilinde ve bir çok dilde +,-,*,/,>>,=,== gibi operatorler kullanılmaktadır. Örneğin + işareti sayısal basit tipleri toplar, string'leride birleştirir. + operatorunu kendi yaptığınız class'lar içinde kullanabilirsiniz. Örneğin A class'ını

A a1=new A();
A a2=new A();
a3=a1+a2;

şeklinde kullanabilirsiniz. a1+a2 şeklinde kullanabilmek için + operatorunu overload etmeniz gerekir.Bu konu için genellikle Point class örneği verilir. Point x,y değişkenlerini tutan bir class. İki point'in toplayıp üçüncüsünü bulmak için + operatoru kullanılabilir.

Point p1=new Point(1,2);
Point p2=new Point(3,4);
Point p3=p1+p2;

p3 Point'inin x'i 4, y'si ise 6 olacaktır. Aşağıda Point class'ı gösterilmektedir.

Point.csİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 using System;
  2 namespace TestApp3
  3 {
  4   public class Point
  5   {
  6     int x,y;
  7     public Point(int x,int y){
  8       this.x=x;
  9       this.y=y;
 10     }    
 11     public static Point operator +(Point p1,Point p2){
 12       int x=p1.x+p2.x;
 13       int y=p1.y+p2.y;
 14       Point p=new Point(x,y);  
 15       return p;
 16     }
 17     public static void Main(string[] args){
 18       Point p1=new Point(1,2);
 19       Point p2=new Point(3,4);
 20       Point p3=p1+p2;
 21       Console.Write(p3.x+" "+p3.y);
 22       Console.Read();
 23     }
 24   }
 25 }

+ operatoru aşağıdaki gibi overload edilmiştir.

public static Point operator +(Point p1,Point p2){
	int x=p1.x+p2.x;
	int y=p1.y+p2.y;
	Point p=new Point(x,y);	
	return p;
}

görüldüğü gibi bir method yaratmaktan çok farklı değildir. Sadece operator keyword'ü kullanılmaktadır.

Sonuç

Operator overloading çok kullanılması tavsiye edilen bir özellik değildir. Operator overloading yapmak yerine bir method yaparak bir iş halledilebilir. Örneğin Point class'ında + işlemi yerine AddPoint(Point p1,Point p2) şeklinde bir method eklenebilir. Operator overloading sadece çok kullanılan Collection,Dizi benzeri class'larınız için kullanılması daha doğru olur. Çok fazla kullanılmaması gerekir.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır