Dikkat edilmesi gereken ilk şey, VB.NET'in C # 'ın (type)instance
çevrim mekanizmasına doğrudan bir analoğu olmamasıdır . Bunu gündeme getiriyorum çünkü iki VB.NET operatörünü karşılaştırmak için bir başlangıç noktası olarak yararlıdır (ve bunlar operatörlerdir, fonksiyon anlamlarına sahip olsalar bile fonksiyon değillerdir).
DirectCast()
C # döküm operatöründen daha katıdır. Yalnızca, zaten döküm yaptığınız öğe zaten yayınladığınız tür olduğunda yayınlamanıza izin verir. Yine de değer türlerinin kutusundan çıkarılacağına inanıyorum, ancak aksi takdirde herhangi bir dönüştürme yapmaz. Yani, örneğin, yayın yapamazsanız short
için int
bir C # ile olabilir gibi (int)
döküm. Ancak IEnumerable
, temeldeki IEnumerable
nesne değişkeniniz gerçekten bir Array
. Ve elbette Object
, nesne örneğinizin türünün, miras ağacında gerçekten cast türünüzün altında bir yerde olduğunu varsayarak, herhangi bir şeyden dönüştürme yapabilirsiniz .
Bu arzu edilir çünkü çok daha hızlıdır . Gerçekleştirilmesi gereken daha az dönüştürme ve tür denetimi vardır.
CType()
C # döküm operatöründen daha az katıdır. (int)
Bir dizeyi tam sayıya dönüştürmek gibi basit tarzda bir atamayla yapamayacağınız şeyleri yapacak . Oyuncunuzun hedef türü olan Convert.To___()
C # ' da arama kadar güce sahiptir ___
.
Bu arzu edilir çünkü çok güçlüdür. Ancak bu güç, performans pahasına gelir; DirectCast()
ya da C # 'ın cast operatörü kadar hızlı değil çünkü atmayı bitirmek için epeyce iş yapması gerekebilir. Genel olarak DirectCast()
, yapabildiğiniz zamanları tercih etmelisiniz .
Son olarak, TryCast()
C # as
operatörünün doğrudan analogu olan bir döküm operatörünü kaçırdınız .