SORU
15 Kasım 2012, PERŞEMBE


'' ile atmayı dene karşı boş olduğunu kontrol edin

Resharper böyle mi yapacağım geçtiğini fark ettim:

if (myObj.myProp is MyType)
{
   ...
}

bu içine:

var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
   ...
}

Bu ani değişikliğin sebebi ne önerirsiniz? Düşündüren optimizasyon değişiklikleri ve kod azaltma değişiklikler Resharper alışkınım, ama bu tek ifademi almak ve iki-astar çevirmek istiyor gibi geliyor.

10* *göre:

Birifadeaşağıdaki koşulların her ikisi de true ise için değerlendiren vardır bir araya geldi:

ifadeboş değil. ifade çevirebilirsinizyazın. Yani, bir (type)(expression) tamamlayacak form dökme ifade bir özel durum üretiliyor.

Yanlış okuma bu ben miyim, yoksa değil is aynı çekler, açıkça null kontrol etmek için başka bir yerel değişken oluşturmak için gerek kalmadan tek bir satır sadece yapmak değil mi?

CEVAP
15 Kasım 2012, PERŞEMBE


Sadece bir döküm var çünkü. Bu karşılaştırmak:

if (myObj.myProp is MyType) // cast #1
{
    var myObjRef = (MyType)myObj.myProp; // needs to be cast a second time
                                         // before using it as a MyType
    ...
}

bunun için:

var myObjRef = myObj.myProp as MyType; // only one cast
if (myObjRef != null)
{
    // myObjRef is already MyType and doesn't need to be cast again
    ...
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MrRandomSong

    MrRandomSong

    29 Kasım 2009
  • tinycammonitor

    tinycammonit

    14 Aralık 2010
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011