Açık ve örtük dönüştürmeler (Visual Basic)
Bir kapalý dönüþtürme kaynak kodunda özel bir sözdizimi gerekli değildir.Aşağıdaki örnekte, Visual Basic değerinin örtülü olarak dönüştürür k atamak için önce bir tek duyarlıklı kayan noktalı değere q.
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
Bir açýk dönüþtürme türü dönüştürme anahtar sözcüðünü kullanýr.Visual Basicanahtar ifade parantez içinde istenen veri türüne işlenemiyor birkaç tür sözcükler sağlar.Bu anahtar sözcükler işlevleri gibi davranacak, ancak yürütme bir işlev çağrısı ile biraz daha hızlıdır, bu nedenle kodu satır içi derleyici oluşturur.
Önceki örnekte, aşağıdaki uzantısına CInt anahtar sözcük değeri dönüştürür q atamak için önce bir tamsayıya geri k.
' 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ükler
Kullanılabilir dönüştürme anahtar sözcükler aşağıdaki tabloda gösterilmiştir.
Tür dönüştürme anahtar sözcük |
Bir ifade veri türüne dönüştürür |
Dönüştürülecek ifade izin verilen veri türleri |
CBool |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), String,Object |
|
CByte |
Herhangi bir sayısal tür (dahil olmak üzere SByte ve türleri numaralandırılan), Boolean, String,Object |
|
CChar |
String, Object |
|
CDate |
String, Object |
|
CDbl |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CDec |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CInt |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CLng |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CObj |
Her türlü |
|
CSByte |
Herhangi bir sayısal tür (dahil olmak üzere Byte ve türleri numaralandırılan), Boolean, String,Object |
|
CShort |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CSng |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CStr |
Any numeric type (including Byte, SByte, and enumerated types), Boolean, Char, Char array, Date,Object |
|
CType |
Virgül aşağıdaki belirtilen türü (,) |
Dönüştürme sırasında bir temel veri türü (bir birim türü bir dizi de dahil olmak üzere), aynı ilgili dönüştürme anahtar sözcük için izin verildiği gibi türleri Dönüştürme sırasında bir Bileşik veri türü, bunu uygulayan arabirimleri ve devraldığı sınıfları Bir sınıf veya yapı aşırı üzerinde dönüştürürken CType, o sınıf veya yapı |
CUInt |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CULng |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
|
CUShort |
Herhangi bir sayısal tür (dahil olmak üzere Byte, SByteve türleri numaralandırılan), Boolean, String,Object |
CType işlevi
CType işlevi (Visual Basic) İki bağımsız çalışır.İlk ifade dönüştürülecek ve ikinci hedef veri türü veya nesne sınıfı.İlk bağımsız değişken bir ifade, bir tür olması gerektiğini unutmayın.
CTypeolan bir satır içi işlev, yani derlenmiş kod dönüştürme yapar, genellikle bir işlev oluşturmadan arayın.Bu, performansı artırır.
Bir karşılaştırma için CType diğer tür dönüştürme anahtar sözcükleriyle, bkz: DirectCast işleci (Visual Basic) ve TryCast işleci (Visual Basic).
Birim türleri
Aşağıdaki örnek kullanımını gösterir CType.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Bileşik türleri
Kullanabileceğiniz CType bileşik veri türleri de birim türleri için farklı değerler dönüştürmek.Aşağıdaki örnekte olduğu gibi arabirimlerinden birinin türü için nesne sınıfı birleşim 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
CTypeAşağıdaki örnekte olduğu gibi array veri türleri de dönüştürebilirsiniz.
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 bir örnek için, bkz. Dizi dönüşümleri (Visual Basic).
CType tanımlama türleri
Tanımlayabileceğiniz CType bir sınıf veya yapı tanımladığınız.Bu değerleri için ve sınıf veya yapı türünü dönüştürmenize olanak sağlar.Daha fazla bilgi ve bir örnek için, bkz. Nasıl yapılır: bir Dönüþtürme iþleci (Visual Basic) tanımla.
[!NOT]
Bir hata oluşursa veya dönüştürme anahtar sözcüğü ile kullanılan değerleri hedef veri türü için geçerli olmalıdır.Örneğin dönüştürmeye çalışırsanız, bir Long için bir Integer, değeri Long için geçerli aralık içinde olmalıdır Integer veri türü.
Uyarı |
---|
Belirtme CType kaynak türü hedef türünden almıyor, bir sınıf türünden başka bir başarısız zamanında dönüştürmek için.Böyle bir hata oluşturduğunda bir InvalidCastException özel durum. |
Ancak, türlerinden bir yapı ya da sınıf tanımladığınız ise ve tanımladığınız CType gereksinimlerini karşılamazsa, yapı veya sınıf, bir dönüştürme başarabilir, CType.Bkz: Nasıl yapılır: bir Dönüþtürme iþleci (Visual Basic) tanımla
Açık bir dönüştürme işlemi olarak da bilinen olan çevrim belirtilen veri türü veya nesne sınıfı için bir ifade.
Ayrıca bkz.
Görevler
Nasıl yapılır: bir nesneyi Visual Basic'te başka bir türe dönüştürmek
Veri türleri (Visual Basic) sorun giderme
Başvuru
Veri türü özeti (Visual Basic)
Tür dönüştürme işlevleri (Visual Basic)
Kavramlar
Dizeler ve diğer türleri (Visual Basic) arasında dönüştürme