TryCast İşleci (Visual Basic)
Özel durum oluşturmayan bir tür dönüştürme işlemi sunar.
Açıklamalar
Denenen bir dönüştürme başarısız olursa CType ve DirectCast her ikisi de bir InvalidCastException hata oluşturur. Bu, uygulamanızın performansını olumsuz etkileyebilir. TryCasthiçbir şeydöndürmez, bu nedenle olası bir özel durumu işlemek zorunda kalmak yerine yalnızca döndürülen sonucu test etmeniz gerekir Nothing .
TryCastAnahtar sözcüğünü CType Işlevini ve DirectCast İşleci anahtar sözcüğünü kullandığınız şekilde kullanırsınız. İlk bağımsız değişken olarak bir ifade ve ikinci bağımsız değişken olarak dönüştürülecek bir tür sağlarsınız. 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ğerini devralması ya da uygulamanız gereken anlamına gelir.
Hatalar ve hatalar
TryCast devralma veya uygulama ilişkisi olmadığını algılarsa bir derleyici hatası oluşturur. Ancak bir derleyici hatasının olmaması, başarılı bir dönüştürmeyi garanti etmez. İstenen dönüştürme daraltılamaz, çalışma zamanında başarısız olabilir. Bu durumda TryCast hiçbir şeydöndürmez.
Dönüşüm Anahtar Sözcükleri
Tür dönüştürme anahtar sözcüklerini karşılaştırma aşağıdaki gibidir.
| Sözcükle | Veri türleri | Bağımsız değişken ilişkisi | Çalışma zamanı hatası |
|---|---|---|---|
| CType İşlevi | Tüm veri türleri | İki veri türü arasında genişletme veya daraltma dönüştürmesi tanımlanmalıdır | Oluşturur InvalidCastException |
| DirectCast İşleci | Tüm veri türleri | Bir tür, diğer türden devralması veya uygulamamalıdır | Oluşturur InvalidCastException |
TryCast |
Yalnızca başvuru türleri | Bir tür, diğer türden devralması veya uygulamamalıdır | Hiçbir şey döndürmez |
Örnek
Aşağıdaki örnek nasıl kullanılacağını göstermektedir TryCast .
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