SORU
17 Aralık 2013, Salı


Neden (nesne)0 == (object)0 farklı ((nesne)0).((Nesne)0) eşittir?

Neden şu ifadelere farklı mı?

[1]  (object)0 == (object)0 //false
[2]  ((object)0).Equals((object)0) // true

Aslında, tamamen [1] çünkü muhtemelen anlayabiliyorum .NET çalışma zamanı 2 ** tamsayı ve yerine başvuruları karşılaştırma başlayacaktır. Ama neden [2] farklı mıdır?

CEVAP
17 Aralık 2013, Salı


Farklı davranmaya çağırır nedeni, onların çok farklı yöntemleri bağlamak.

== muhafaza edecek statik referans eşitlik operatörü bağlamak. int 2 bağımsız kutulu değerleri aynı referans değildir dolayısıyla oluşturulur.

Bu ikinci durumda örnek yöntemi için Object.Equals bağlama. Bu Int32.Equals ve bu kontroller için aşağı kutulu bir tamsayı için filtre olan sanal bir yöntemdir. Her ikisi de tamsayı değerleri eşit 0 dolayısıyla

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • knopik96

    knopik96

    7 Mayıs 2011
  • Kontor.TV

    Kontor.TV

    14 Mart 2006
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005