Neden C# birbirleri ile iki nesne türleri karşılaştırmak için ama VB değil't başarısız olur? | Netgez.com
SORU
12 ŞUBAT 2013, Salı


Neden C# birbirleri ile iki nesne türleri karşılaştırmak için ama VB değil't başarısız olur?

C iki nesne var# ya da herhangi bir mantıksal tür olduğunu bilmiyorum. Bu karşılaştırmaya çalıştığımda ancak C# doğru cevap veremez. VB.NET aynı kodu denedim ve böyle oldu !

Eğer bir çözüm varsa bu durumu nasıl düzelteceğimi söyleyebilir mi ?

C#:

object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!

VB.NET:

Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True

CEVAP
12 ŞUBAT 2013, Salı


C#, == operatör başvuru türü ifadeler uygulandığında () bir performans sergiliyorbaşvurueşitlik olmadığı sürece kontrol edinaşırı yüklü. Boks dönüşüm sonucu olan iki başvuru kıyaslıyorsun, o ayrı referanslar.

EDİT: dayalı == farklı alabilirsiniz davranış - ama . aşırı olan türleri İle ^em>derleme zamanıtip ifadeler. Örneğin, string ==(string, string sağlar):

string x = new string("foo".ToCharArray());
string y = new string("foo".ToCharArray());
Console.WriteLine(x == y); // True
Console.WriteLine((object) x == (object) y); // False

İlk karşılaştırma aşırı yüklenmiş operatör kullanıyor, ama ikinci kullanıyor burada "varsayılan" referans karşılaştırma.

VB, = operatör için daha fazla çalışmak bile sadece Option Compare gibi şeyler metin karşılaştırıldığında nasıl etkileyebilir object.Equals(x, y) kullanarak eşdeğer değil.

Temelde operatörler aynı şekilde çalışmıyor ve değildirtasarlanmıştıraynı şekilde çalışır.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • arnejann

    arnejann

    3 Kasım 2007
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011