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

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • TouchePro

    TouchePro

    27 EYLÜL 2007