TryCast İşleci (Visual Basic)
Özel durum oluşturmayan bir tür dönüştürme işlemi tanıtır.
Açıklamalar
Dönüştürme girişimi başarısız olursa CType
ve DirectCast
her ikisi de hata oluşturursa InvalidCastException . Bu, uygulamanızın performansını olumsuz etkileyebilir. TryCast
Hiçbir şey döndürmez, böylece olası bir özel durumu işlemek yerine yalnızca döndürülen sonucu ile Nothing
test etmeniz gerekir.
Anahtar sözcüğünüTryCast
, CType İşlevi ve DirectCast İşleci anahtar sözcüğünü kullandığınız gibi kullanırsınız. İlk bağımsız değişken olarak bir ifade ve bunu ikinci bağımsız değişken olarak dönüştürmek için bir tür sağlayın. TryCast
yalnızca sınıflar ve arabirimler gibi başvuru türlerinde çalışır. İki tür arasında devralma veya uygulama ilişkisi gerektirir. Bu, bir türün diğerinden devralması veya uygulaması gerektiği anlamına gelir.
Hatalar ve Hatalar
TryCast
devralma veya uygulama ilişkisi olmadığını algılarsa bir derleyici hatası oluşturur. Ancak derleyici hatası olmaması, başarılı bir dönüştürmeyi garanti etmez. İstenen dönüştürme daraltılıyorsa çalışma zamanında başarısız olabilir. Böyle bir durumda Hiçbir TryCast
şey döndürmez.
Dönüşüm Anahtar Sözcükleri
Tür dönüştürme anahtar sözcüklerinin karşılaştırması aşağıdaki gibidir.
Anahtar sözcük | Veri türleri | Bağımsız değişken ilişkisi | Çalışma zamanı hatası |
---|---|---|---|
CType İşlevi | Herhangi bir veri türü | Genişletme veya daraltma dönüştürmesi iki veri türü arasında tanımlanmalıdır | Atar InvalidCastException |
DirectCast İşleci | Herhangi bir veri türü | Bir türün diğer türden devralması veya diğer türü uygulaması gerekir | Atar InvalidCastException |
TryCast |
Yalnızca başvuru türleri | Bir türün diğer türden devralması veya diğer türü uygulaması gerekir | Hiçbir Şey Döndürmez |
Örnek
Aşağıdaki örnekte nasıl kullanılacağı TryCast
gösterilmektedir.
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function