SORU
16 HAZİRAN 2010, ÇARŞAMBA


DirectCast arasındaki fark() ve CType() VB.Net içinde

Deneyimli bir C am/C /C# sadece VB.NET içine almış programcı. Ben genellikle kullanmak CType (Cınt, CBool, CStr) atmalarını çünkü az karakter ve ilk yol döküm olduğumu maruz kalan, ama haberim DirectCast ve TryCast.

Basitçe, herhangi bir farklılık (dökme etkisi, performans, vb.) vardır DirectCast ve CType arasında? TryCast fikrini anlıyorum.

CEVAP
16 HAZİRAN 2010, ÇARŞAMBA


Not ilk şey VB.NET C doğrudan bir analog yok olur#'(type)instance döküm mekanizması. Yararlı iki VB.NET operatörler, fonksiyon ve anlambilim olsa bile operatörler, fonksiyonlar değil,) karşılaştırırken, bir başlangıç noktası olarak kullanmak için çünkü o kadar getirdim.

DirectCast() C daha sıkı# döküm operatörü. Sadece madde dökme zaman dökme sağlarzatentürü için döküm vardır. Herhangi bir dönüşüm olmaz. Bu yüzden, örneğin, C# (int) alçı ile senin gibi int kısa döküm, yapamazsın. Ama eğer IEnumerable temel nesne değişkeni gerçekten Array Bir ise, bir dizi için bir IEnumerable döküm yapabilirsiniz. Ve tabii ki hiçbir şey için bir Nesne örneğine nesne türü gerçekten bir yere kalıtım ağacında döküm tipi altında olduğunu varsayarak çevirebilirsiniz.

Bu o yapar çünkü arzu edilirdaha hızlı. Yer alması gereken biraz daha az dönüşüm ve bir tür kontrol var.

CType() C daha az sıkı# döküm operatörü. Sadece (int) basit bir döküm ile yapamayacağın bir tamsayı bir dize dönüştürmek gibi bir şey yapar. C Convert.To___() arama kadar gücü var# nerede_hedef dökme türüdür. Bu arzu edilir, çünkü çok güçlü, ama bu gücün de maliyet performansı-değil kadar hızlı DirectCast() veya C#'ın döküm operatörü olabilir çünkü oldukça çok iş yapmak için son kadro.

Genellikle zaman DirectCast() tercih etmelisiniz.

Son olarak, bir döküm operatörü kaçırdın: C için doğrudan bir analog olan TryCast(),#'10 ** operatör.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • cyriak

    cyriak

    29 Mart 2006
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009