C Sharp'ta Operatörler
Yazan : Yusuf Nar, Nisan 12, 2007, Perşembe 14:54
Etiket(ler) : c sharp, operatörler
Operatörler bir takım işlemlerin tek bir deyimle yapılmasını sağlayan sembollerdir. Gerçekte ise bazı fonksiyonların sembollerle daha görsel kodlarla ifade edilmesini sağlarlar. Örneğin 1+2 gibi bir toplama işlemi gerçekte integer yapısının integer argüman alan bir fonksiyonunu çalıştırır diye düşünebiliriz. Aşağıda C sharp dilindeki operatörlerden bazılarını ve bunlardan sık kullandıklarımıza ilişkin örnekleri görmektesiniz.
C Sharp operatörleri ile ilgili örnek uygulamayı buradan indirebilirsiniz.
. : Nokta Operatörü
Nokta operatörü bir sınıfın, namespace'in elemanlarına erişmek için kullanılır. Örneğin;
class BasitBirSinif
{
public int a;
public void b()
{
}
}
BasitBirSinif obj = new BasitBirSinif();
obj .a = 6; // a elemanına 6 atar;
obj .b(); // b metodunu çalıştırır;
// MessageBox sınıfının Show metodunu çalıştırır.
MessageBox.Show("hello");
() : Parantez
Parantez operatörü işlem sırasını belirlemek için kullanıldığı gibi tür dönüşümü işlemi için de kullanılmaktadır. Örneğin;
double x = 1234.7;
int a;
a = (int)x;
// double tipindenki x değişkenini int tipine çevirerek a değişkenine atar
[] : Indexer Operatörü
Köşeli parantezler dizilerin elemanlarına erişmek için, indexleyicilerde ve pointer işlemlerinde kullanılır. Örneğin;
// fib int[] tipinde bir değişkendir, "int dizisi"
int[] fib;
// 100 elemanlı bir int[] dizisi oluşturur.
fib = new int[100];
Collections.Hashtable h = new Collections.Hashtable();
h["a"] = 123;
// bir string değişkenini index olarak kullanmakta.
++, -- : Arttırma, Azaltma
Bu operatörler operandlarının değerini bir arttırır veya azaltır.
- Operanddan önce kullanıldığında(prefix), işlemin dönüş değeri operandın yeni değeridir.
- Operanddan sonra kullanıldığında(postfix), işlemin dönüş değeri operandın eski değeridir. Örneğin;
double x;
x = 1.5;
MessageBox.Show(Convert.ToString(++x));
x = 1.5;
MessageBox.Show(Convert.ToString(x++));
MessageBox.Show(Convert.ToString(x));
Yukarıdaki işlemlerin çıktısı şu şekilde olacaktır.
//Çıktı
2.5
1.5
2.5
new
new operatörü obje oluşturmak için veya değer tiplerine ait varsayılan(default) constructor'ları(yapıcı metod) çalıştırmak için kullanılır. Örneğin;
//Class1 tipinde o isimli object oluşturur.
Class1 o = new Class1();
veya
//integer yapısının default constructor metodunu çağırır.
int i = new int();
typeof
Bir objenin, değişkenin System.Type tipinde olan veri tipini ele etmek için kullanılır. GetType() metodu ile aynı işlevi sağlar. Örneğin;
System.Type type = typeof(int);
veya;
int i = 0;
System.Type type = i.GetType();
+, -, /, *, % : Matematiksel İşlem Operatörleri
Aslında bu operatölerin her biri ayrı ayrı incelenmesi gerekir. Çünkü örneğin + operatörü sadece matematiksel işlemler için kullanılan bir operatör değildir. operandlarına göre(operandlarının tipine göre) gördüğü işlevler değişmektedir. Kullanımları;
MessageBox.Show(Convert.ToString(5 + 5)); // toplama
MessageBox.Show(Convert.ToString(5 + .5)); // toplama
MessageBox.Show("5" + "5"); // string toplama
MessageBox.Show(Convert.ToString(5.0 + "5")); // string toplama
// double türünden string türüne otomatik dönüşüm gerçekleşir.
MessageBox.Show(Convert.ToString(-5/2));
MessageBox.Show(Convert.ToString(-5.0/2));
MessageBox.Show(Convert.ToString(-5));
MessageBox.Show(Convert.ToString(5 - 1));
MessageBox.Show(Convert.ToString(5 - .5));
MessageBox.Show(Convert.ToString(5 % 2)); // int
MessageBox.Show(Convert.ToString(-5 % 2)); // int
MessageBox.Show(Convert.ToString(5.0 % 2.2)); // double
MessageBox.Show(Convert.ToString(5.0m % 2.2m)); // decimal
MessageBox.Show(Convert.ToString(-5.2 % 2.0)); // double
MessageBox.Show(Convert.ToString(5 * 2));
MessageBox.Show(Convert.ToString(-.5 * .2));
MessageBox.Show(Convert.ToString(-.5m * .2m)); // decimal type
= : Atama Operatörü
Atama operatörü sağ taraf operandının değerini sol taraftaki operanda atar ve sağ taraf operandın yeni değerini döndürür. Sağ taraf operandın sol taraf operandına implicit dönüşümünün mümkün olması gerekir. Kıyaslamalarda = yerine == operatörü kullanılmalıdır. Kullanımı;
double x;
int i;
i = 5; // int türünden int türüne atama
x = i; // int türünden double türüne implicit dönüşüm
== : Eşitlik operatörü
İki operandın eşit olup olmadığını döner. Dönüş değer true yada false değeridir. string haricindeki referans tipleri için iki operandın da aynı objeyi gösterip göstermediğini kontrol eder. string tipi içinse her iki string objesinin de aynı uzunlukta ve aynı karakterlere sahip olup olmadığını kontrol eder.
// Numerik olarak kıyaslama: True
MessageBox.Show(Convert.ToString((2 + 2) == 4));
// Referans olarak : farklı objeler,
// aynı değer olmasına rağmen : False.
object s = 1;
object t = 1;
MessageBox.Show(Convert.ToString(s == t));
// string tipinde objeler:
string a = "merhaba";
string b = String.Copy(a);
// string değerleri kıyaslandığında : True
MessageBox.Show(Convert.ToString(a == b));
// string referansları kıyaslandığında : False
MessageBox.Show(Convert.ToString((object)a == (object)b));
!= : Eşitsizlik Operatörü
Çalışma yapısı olarak eşitlilik operatörüyle aynıdır. Eğer iki operand eşit değilse true, eşitse false döner.
&& : Mantıksal Ve
İki operandı vardır ve her iki operand da true ise sonuç true döner. Aksi takdirde false döner.
|| : Mantıksal Veya
İki operandı vardır ve operandların herhangi biri true ise sonuç true döner. Aksi takdirde false döner.
?: : Kontrol Operatörü
Bu operatör if-else ifadelerinin yaptığı bazı işlemleri daha okunaklı kılar. 3-5 satırlık işlemleri tek bir satırda yazabilirsiniz. Aşağıdaki formda kullanılır. Eğer koşul ifadesi true, ilk ifadeyi çalıştırır, false ise ikinci ifadeyi çalıştırır.
koşul? ilk ifade : ikinci ifade;
Aşağıda if else ifadesi ile yazılmış olan kod bloğunun koşul operatörü ile nasıl yazılabileceği görülmektedir.
if(x != 0.0)
s = Math.Sin(x)/x;
else
s = 1.0;
s = (x != 0.0) ? Math.Sin(x)/x : 1.0;
x, 0 değerine eşit değilse s değişkenin değeri Math.Sin(x) / x ile, 0 değerine eşitse 1.0 olarak hesaplanır.