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

  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • paikimchung

    paikimchung

    12 Mayıs 2006
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006