Örtük ve Açık Dönüştürmeler (Visual Basic)

Örtük dönüştürme, kaynak kodda özel bir söz dizimi gerektirmez. Aşağıdaki örnekte Visual Basic, değerine atamadan qönce değerini k örtük olarak tek duyarlıklı kayan nokta değerine dönüştürür.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k

Açık dönüştürmede tür dönüştürme anahtar sözcüğü kullanılır. Visual Basic, bir ifadeyi parantez içinde istenen veri türüne zorlamak için bu tür birkaç anahtar sözcük sağlar. Bu anahtar sözcükler işlevler gibi davranır, ancak derleyici kodu satır içinde oluşturur, bu nedenle yürütme bir işlev çağrısından biraz daha hızlıdır.

Yukarıdaki örneğin aşağıdaki uzantısında anahtar sözcüğü değerini CInt değerine atamadan önce bir tamsayıya kdönüştürürq.

' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).

Dönüşüm Anahtar Sözcükleri

Aşağıdaki tabloda kullanılabilir dönüştürme anahtar sözcükleri gösterilmektedir.

Tür dönüştürme anahtar sözcüğü bir ifadeyi veri türüne dönüştürür dönüştürülecek ifadenin izin verilebilen veri türleri
CBool Boolean Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), String,Object
CByte Byte Veri Türü Herhangi bir sayısal tür (ve numaralandırılmış türler dahil SByte ), Boolean, String, Object
CChar Char Veri Türü String, Object
CDate Date Veri Türü String, Object
CDbl Double Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CDec Decimal Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CInt Integer Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CLng Long Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CObj Object Veri Türü Herhangi bir tür
CSByte SByte Veri Türü Herhangi bir sayısal tür (ve numaralandırılmış türler dahil Byte ), Boolean, String, Object
CShort Short Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CSng Single Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CStr String Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, Char, Char dizi, Date, ,Object
CType Virgülden sonra belirtilen tür (,) Bir temel veri türüne (bir temel tür dizisi dahil) dönüştürürken, karşılık gelen dönüştürme anahtar sözcüğü için izin verilen türle aynı türler

Bileşik veri türüne dönüştürürken, uyguladığı arabirimler ve devraldığı sınıflar

aşırı yüklediğiniz CTypebir sınıfa veya yapıya dönüştürürken, bu sınıf veya yapı
CUInt UInteger Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CULng ULong Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object
CUShort UShort Veri Türü Herhangi bir sayısal tür (, SByteve numaralandırılmış türler dahilByte), Boolean, String,Object

CType İşlevi

CType İşlevi iki bağımsız değişken üzerinde çalışır. Birincisi dönüştürülecek ifade, ikincisi hedef veri türü veya nesne sınıfıdır. İlk bağımsız değişkenin tür değil bir ifade olması gerektiğini unutmayın.

CType satır içi bir işlevdir, yani derlenen kod genellikle işlev çağrısı oluşturmadan dönüştürmeyi yapar. Bu performansı artırır.

Diğer tür dönüştürme anahtar sözcükleriyle karşılaştırması CType için bkz . DirectCast İşleci ve TryCast İşleci.

Temel Türler

Aşağıdaki örnekte kullanımı gösterilmektedir CType.

k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)

Bileşik Türler

Değerleri bileşik veri türlerine ve temel türlere dönüştürmek için kullanabilirsiniz CType . Aşağıdaki örnekte olduğu gibi bir nesne sınıfını arabirimlerinden birinin türüne zorlamak için de kullanabilirsiniz.

' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)

Dizi Türleri

CType aşağıdaki örnekte olduğu gibi dizi veri türlerini de dönüştürebilir.

Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
    ' obArray can be converted to classV.
    v = CType(obArray, classV())
End If

Daha fazla bilgi ve örnek için bkz . Dizi Dönüştürmeleri.

CType Tanımlayan Türler

Tanımladığınız bir sınıf veya yapı üzerinde tanımlayabilirsiniz CType . Bu, değerleri sınıfınızın veya yapınızın türüne ve türünden dönüştürmenize olanak tanır. Daha fazla bilgi ve örnek için bkz . Nasıl yapılır: Dönüştürme İşleci Tanımlama.

Not

Dönüştürme anahtar sözcüğüyle kullanılan değerler hedef veri türü için geçerli olmalıdır veya bir hata oluşur. Örneğin, bir LongIntegeröğesine dönüştürmeyi denerseniz değerinin Long veri türü için Integer geçerli aralık içinde olması gerekir.

Dikkat

CType Kaynak türü hedef türden türetilmezse, bir sınıf türünden diğerine dönüştürülecek şekilde belirtilmesi çalışma zamanında başarısız olur. Böyle bir hata bir InvalidCastException özel durum oluşturur.

Ancak, türlerden biri tanımladığınız bir yapı veya sınıfsa ve bu yapı veya sınıf üzerinde tanımladıysanız CType , dönüştürme, gereksinimlerinizi CTypekarşılarsa başarılı olabilir. Bkz . Nasıl yapılır: Dönüştürme İşleci Tanımlama.

Açık dönüştürme gerçekleştirmek, ifadeyi belirli bir veri türüne veya nesne sınıfına atama olarak da bilinir.

Ayrıca bkz.