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

  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • justintimberlakeVEVO

    justintimber

    2 EYLÜL 2009
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007