Equals ve Eşittir Karşılaştırma Operatörleri Arasındaki Farklar Nelerdir?

Selamlar;

Herşeyin 1 ve 0 olduğu bir dünyada yaşıyoruz. Bugünkü konumuz true ve false yani comparison operators. Karşılaştırma operatörleri arasında farkların çoğunlukla karıştırıldığını ve hatta hepsinin aynı amaçlı kullanıldığının sanılması üzerine bu konuda makale yazmaya karar verdim.

eq1

(==) ve Equals() methodları’nın ikisi de farklı 2 değeri karşılaştırmak için kullanılır. (==) operator’ü 2 nesneyi karşılaştırırken, Equals() methodu nesnenin içerdiği string’i karşılaştırır. Yani kısaca (==) operatörü 2 nesnenin referans değerlerini karşılaştırırken Equals() methodu sadece içeriği karşılaştırır.

Aşağıdaki kod C#6.0 ile yazılmıştır. Eminim dikkatinizi çeken kayda değer bir farklılık vardır.” {0}” yerine direk yazılacak değer “\{..}” şeklinde yazılmıştır. Bu da yeni Roslyn ile bize gelen kolaylıklardan sadece biridir. Gelelim esas konumuza. Aşağıda 2 nesne hem içerik hem de referans olarak birbirinin aynı olduğu için 2’side true dur.

1

Şimdi aşağıdaki örneği inceleyelim: values ve myBike nesneleri string değer olarak aynı oldukları için Equals() methodu sonucu true dönmüştür. Ancak referance değerleri bakımından birbirlerinden farklı oldukları için (==) sonucu false dönmüştür.

2

Yukarıdaki örnekte null değer atanmış txtNull değişkeni Equals() methodu ile karşılaştırılamaz ve hata döner. Çünkü bakılacak bir content yoktur.

error

Ama (==) karşılaştırmasında referance değerlerine bakıldığı için sorun yoktur ve sonuç tabiki aşağıdaki gibi false’dur.

result

Javascript’deki “==” ve “===” karşılaştırma operatörlernin farklarına gelin hep beraber bakalım: (==) operatörü ile code behind’daki durumun tam tersi olarak 2 değişkenin context değerlerine bakılırken (===) operatörü ile değişkenlerin referans değerlerine bakılır. Alttaki örneklerde bu konu ile ilgili açıklamalar detaylı olarak yapılmıştır.

eq2

result2

Yukarıdaki örneklerden de anlaşılacağı gibi karşılaştırma operatörlerinin kullanımı birbirine benzemesine karşın, aslında yaptıkları işler birbirinden çok farklıdır. Mesela code behind’da eğer sadece içeriğe bakılacak ise (==) operatör’ü yerine Equals() methodu kullanılmalıdır. Ama null kontrolü yapılması şarttır. “kawasaki” örneğinde olduğu gibi yanlış karşılaştırma operatör’ü kullanmak bizi yanlış sonuçlara götürecektir. Aynı şekilde Javascript’de işler biraz değişmekte ve (==) operatörü bu sefer nesnelerin içerdiği string’leri karşılaştırmaktadır. Aynı şekilde (===) operatörü ise içerik yerine nesnelerin kendisini kıyaslamaktadır.

Geldik bir makalenin daha sonuna. Umarım bu küçük ama önemli bilgiler işinize yarar.

Yeni bir makalede görüşmek üzere hoşçakalın.

Herkes Görsün:

Sevebilirsin...

3 Yanıt

  1. Ceyda diyor ki:

    Selamlar Hocam;
    Gerçekten bilmiyormuşum. Ben hepsinin amacı aynı zannediyordum. Meğersem aralarında dağlar kadar fark varmış.
    Böyle ince konulara da yer verdiğiniz için teşekkür ederim.

    İyi çalışmalar.

  2. murat diyor ki:

    Elinize sağlık hocam.
    Bana sorsalar aynı tas aynı hamam derdim. Ve direk yanılırdım.

    İyiki varsınız hocam.

  3. Veli diyor ki:

    Hocam elinize sağlık;
    Cidden çok önemli bir konuyu bu kadar güzel ve çarpıcı şekilde anlattığınız için teşekkür ederim.

    Yeni seminerlerinizi iple çekiyorum…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir