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

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • SelmerSaxMan

    SelmerSaxMan

    24 HAZİRAN 2006
  • World Science Festival

    World Scienc

    1 Mayıs 2008