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

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • njhaley

    njhaley

    24 NİSAN 2006