Aracılığıyla paylaş


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

Örtük dönüştürme, kaynak kodda özel bir söz dizimi gerektirmediğinden, herhangi bir ek işleme ihtiyaç duymaz. Aşağıdaki örnekte, Visual Basic, k değişkenine atamadan önce q değerini örtük olarak tek duyarlıklı bir sayıya 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.

Önceki örneğin aşağıdaki uzantısında, CInt anahtar sözcüğü, q değerini önce geri bir tamsayıya dönüştürür ve ardından k'ye atar.

' 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üştürme 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 Boole Veri Türü Herhangi bir sayısal tür (, Byteve numaralandırılmış türler dahilSByte), String,Object
CByte Bayt 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 Tarih Veri Türü String, Object
CDbl Double Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CDec Ondalık Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CInt Tamsayı Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CLng Uzun Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CObj nesne 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 Kısa Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CSng Single Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CStr Dize Veri Türü Herhangi bir sayısal tür (numaralandırılmış türler ve Byte, SByte dahil), Boolean, Char, Char dizi, Date, Object
CType Virgülden sonra belirtilen tür (,) Bir temel veri türüne (bir temel veri 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ürlerle aynı türler

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

CType aşırı yükleme yaptığınız bir 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 (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CULng ULong Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object
CUShort UShort Veri Türü Herhangi bir sayısal tür (Byte, SByte ve numaralandırılmış türler dahil), Boolean, String, Object

CType İşleci

CType İşleci 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 argümanın bir 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 CTypekullanımı gösterilmektedir.

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.

Uyarı

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

Kaynak tür hedef türden türetilmezse, bir sınıf türünü diğerine dönüştürmek için CType belirtmek çalışma zamanında başarısız olur. Böyle bir hata bir InvalidCastException istisna oluşturur.

Ancak, türlerden biri tanımladığınız bir yapı veya sınıfsa ve CType'ü yapı veya sınıf üzerinde tanımladıysanız, dönüştürme, CType gereksinimlerinizi karşı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 bakınız