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

  • booba1234

    booba1234

    22 Temmuz 2006
  • Fuse

    Fuse

    21 Kasım 2005
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006

İLGİLİ SORU / CEVAPLAR