SORU
25 EYLÜL 2008, PERŞEMBE


Galatasaray' operatör olarak 'doğrudan döküm?

Aşağıdaki kodu göz önünde bulundurun:

void Handler(object o, EventArgs e)
{
   // I swear o is a string
   string s = (string)o; // 1
   //-OR-
   string s = o as string; // 2
   // -OR-
   string s = o.ToString(); // 3
}

Tek tercih edilmesi gereken, kalıp, 3. iyi bir döküm değil, ama niyet olsun... ) ve üç tip arasındaki fark nedir?

CEVAP
25 EYLÜL 2008, PERŞEMBE


  1. o string değil InvalidCastException atar. Eğer o null hatta eğer yoksa atar s o.
  2. Atarsa o string Bir ise veya eğer o null s null. Bu nedenle, yapamazsınız değer türleri (operatör asla bu durumda null dönebilir) ile kullanabilirsiniz. Yoksa atar s o.
  3. o null NullReferenceException neden olur. o.ToString() s, ne tür olursa olsun döndürdükleri atar o.

Çoğu dönüşüm için kullanın 1 - basit ve anlaşılır. Neredeyse hiç bir şey doğru türde değil, ben genellikle bir istisna meydana gelecek beri 2 kullanmak eğilimindedir. Sadece bu iade-null hata kodları (=hata, özel durumlar kullanmak yerine, örneğin, return null) kullanan kötü tasarlanmış kütüphaneler işlevsellik türü için bir ihtiyaç gördüm.

3 dökme değildir ve sadece bir çağırma yöntemi. Dize olmayan bir nesnenin string gösterimini ihtiyacınız olduğunda kullanın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • celebrateubuntu

    celebrateubu

    23 Mayıs 2011
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009