Tür Dönüştürme İşlevleri (Visual Basic)
Bu işlevler satır içinde derlenir, yani dönüştürme kodu ifadeyi değerlendiren kodun bir parçasıdır. Bazen dönüştürmeyi gerçekleştirmek için bir yordama çağrı yapılmaz ve bu da performansı artırır. Her işlev bir ifadeyi belirli bir veri türüne zorlamak.
Sözdizimi
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)
Bölüm
expression
Gerekli. Kaynak veri türünün herhangi bir ifadesi.
Dönüş Değeri Veri Türü
İşlev adı, aşağıdaki tabloda gösterildiği gibi döndürdüğü değerin veri türünü belirler.
İşlev adı | Veri türü döndürme | Bağımsız değişken aralığı expression |
---|---|---|
CBool |
Boolean Veri Türü | Char Geçerli veya String sayısal ifadeler. |
CByte |
Byte Veri Türü | Byte.MinValue (0) ile Byte.MaxValue (255) arasında (işaretsiz); kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CByte kayan noktadan bayta dönüştürme performansını iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CChar |
Char Veri Türü | Herhangi bir geçerli Char veya String ifade; bir String öğesinin yalnızca ilk karakteri dönüştürülür; değer 0 ile 65535 (işaretsiz) arasında olabilir. |
CDate |
Date Veri Türü | Tarih ve saatin geçerli bir gösterimi. |
CDbl |
Double Veri Türü | -1,79769313486231570E+308 ile -4,94065645841246544E-324 negatif değerler için; Pozitif değerler için 4,94065645841246544E-324 - 1,79769313486231570E+308. |
CDec |
Decimal Veri Türü | Sıfır ölçeklendirilmiş sayılar için +/-79.228.162.514.264.337.593.543.950.335; yani ondalık basamak içermeyen sayılar. 28 ondalık basamak içeren sayılar için, aralık +/-7,92281625142643375935439503335'tir. Sıfır olmayan en küçük sayı 0,00000000000000000000000000000000000000001 (+/-1E-28). |
CInt |
Integer Veri Türü | Int32.MinValue (-2.147.483.648) ile (2.147.483.647) arasında Int32.MaxValue kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CInt kayan noktadan tamsayıya dönüştürme performansını iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CLng |
Long Veri Türü | Int64.MinValue (-9.223.372.036.854.775.808) ile Int64.MaxValue (9.223.372.036.854.775.807); kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CLng kayan nokta ile 64 bit tamsayı dönüştürme performansını iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CObj |
Object Veri Türü | Herhangi bir geçerli ifade. |
CSByte |
SByte Veri Türü | SByte.MinValue (-128) ile (127) arasında SByte.MaxValue ; kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CSByte kayan noktalı bayt dönüştürme performansını iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CShort |
Short Veri Türü | Int16.MinValue (-32.768) ile (32.767) arasında Int16.MaxValue ); kesirli parçalar yuvarlanmış.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CShort kayan nokta ile 16 bit tamsayı dönüştürme performansını iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CSng |
Single Veri Türü | Negatif değerler için -3,402823E+38 ile -1,401298E-45; Pozitif değerler için 1.401298E-45 - 3.402823E+38. |
CStr |
String Veri Türü | için CStr döndürür, bağımsız değişkene expression bağlıdır. Bkz. CStr İşlevi için Dönüş Değerleri. |
CUInt |
UInteger Veri Türü | UInt32.MinValue (0) ile UInt32.MaxValue (4.294.967.295) arasında (işaretsiz); kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle kayan nokta performansını işaretsiz tamsayı dönüştürmeye CUInt iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CULng |
ULong Veri Türü | UInt64.MinValue (0) ile UInt64.MaxValue (18.446.744.073.709.551.615) arasında (işaretsiz); kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle CULng kayan nokta performansını işaretsiz uzun tamsayı dönüştürmeye iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CUShort |
UShort Veri Türü | UInt16.MinValue (0) ile UInt16.MaxValue (65.535) arasında (işaretsiz); kesirli parçalar yuvarlanır.1 Visual Basic 15.8'den başlayarak, Visual Basic işleviyle kayan noktanın performansını işaretsiz 16 bit tamsayı dönüştürmeye CUShort iyileştirir; daha fazla bilgi için Açıklamalar bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
1 Kesirli parçalar bankacı yuvarlama adı verilen özel bir yuvarlama türüne tabi olabilir. Daha fazla bilgi için "Açıklamalar" bölümüne bakın.
Açıklamalar
Kural olarak, Visual Basic tür dönüştürme işlevlerini sınıfı veya tek bir tür yapısı veya sınıfı gibi ToString()
Convert .NET Framework yöntemlerine tercih etmek için kullanmanız gerekir. Visual Basic işlevleri, Visual Basic koduyla en iyi etkileşim için tasarlanmıştır ve ayrıca kaynak kodunuzu daha kısa ve okunmasını kolaylaştırır. Buna ek olarak, .NET Framework dönüştürme yöntemleri her zaman Visual Basic işlevleriyle aynı sonuçları üretmez, örneğin öğesine dönüştürürken Boolean
Integer
. Daha fazla bilgi için bkz . Veri Türlerinde Sorun Giderme.
Visual Basic 15.8'den başlayarak, aşağıdaki yöntemler tarafından döndürülen veya Double değerini tamsayı dönüştürme işlevlerinden birine (CByte
, CShort
, , CInt
, CLng
, CSByte
, CUShort
, , CUInt
) CULng
geçirdiğinizde Single kayan noktadan tamsayıya dönüştürmenin performansı iyileştirilir:
- Conversion.Fix(Double)
- Conversion.Fix(Object)
- Conversion.Fix(Single)
- Conversion.Int(Double)
- Conversion.Int(Object)
- Conversion.Int(Single)
- Math.Ceiling(Double)
- Math.Floor(Double)
- Math.Round(Double)
- Math.Truncate(Double)
Bu iyileştirme, çok sayıda tamsayı dönüştürmesi olan kodun iki katına kadar hızlı çalışmasını sağlar. Aşağıdaki örnekte bu iyileştirilmiş kayan noktadan tamsayıya dönüştürmeler gösterilmektedir:
Dim s As Single = 173.7619
Dim d As Double = s
Dim i1 As Integer = CInt(Fix(s)) ' Result: 173
Dim b1 As Byte = CByte(Int(d)) ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s)) ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d)) ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s)) ' Result: 174
Davranış
Zorlama. Genel olarak, bir işlemin sonucunu varsayılan veri türü yerine belirli bir veri türüyle zorlamak için veri türü dönüştürme işlevlerini kullanabilirsiniz. Örneğin, tek duyarlıklı, çift duyarlıklı veya tamsayı aritmetiğinin normalde gerçekleşeceği durumlarda ondalık aritmetiği zorlamak için kullanın
CDec
.Başarısız Dönüştürmeler.
expression
İşleve geçirilen, dönüştürülecek veri türü aralığının dışındaysa, bir OverflowException gerçekleşir.Kesirli Parçalar. Bir nonintegral değerini tamsayı türüne dönüştürdüğünüzde, tamsayı dönüştürme işlevleri (
CByte
,CInt
,CLng
,CSByte
,CShort
, ,CUInt
,CULng
veCUShort
) kesirli bölümü kaldırır ve değeri en yakın tamsayıya yuvarlar.Kesirli bölüm tam olarak 0,5 ise, tamsayı dönüştürme işlevleri onu en yakın çift tamsayıya yuvarlar. Örneğin, 0,5 0'a yuvarlar ve 1,5 ve 2,5 her ikisi de 2'ye yuvarlar. Buna bazen bankacı yuvarlama adı verilir ve amacı, bu tür sayıların birçoğunu bir araya eklerken birikebilecek bir yanlılığı telafi etmektir.
CInt
veCLng
bir sayının Int kesirli kısmını yuvarlama yerine kesen ve Fix işlevlerinden farklıdır. Ayrıca veFix
Int
her zaman geçirdiğiniz veri türüne sahip bir değer döndürür.Tarih/Saat Dönüştürmeleri. Bir değerin IsDate tarih ve saate dönüştürülebilir olup olmadığını belirlemek için işlevini kullanın.
CDate
tarih değişmez değerlerini ve saat değişmez değerlerini tanır ancak sayısal değerleri tanımaz. Visual Basic 6.0Date
değerini Visual Basic 2005 veya sonraki sürümlerindeki birDate
değere DateTime.FromOADate dönüştürmek için yöntemini kullanabilirsiniz.Nötr Tarih/Saat Değerleri. Tarih Veri Türü her zaman hem tarih hem de saat bilgilerini içerir. Tür dönüştürme amacıyla Visual Basic, 1/1/0001 (1 Ocak 1) değerinin tarih için nötr bir değer ve 00:00:00 (gece yarısı) değerinin zaman için nötr bir değer olduğunu kabul eder. Bir değeri dizeye
Date
dönüştürürseniz,CStr
sonuçta elde edilen dizeye nötr değerler içermez. Örneğin, bir dizeye dönüştürürseniz#January 1, 0001 9:30:00#
sonuç "09:30:00" olur; tarih bilgileri gizlenir. Ancak, tarih bilgileri özgünDate
değerde hala bulunur ve işlev gibi DatePart işlevlerle kurtarılabilir.Kültür Duyarlılığı. Dizeleri içeren tür dönüştürme işlevleri, uygulamanın geçerli kültür ayarlarına göre dönüştürmeler gerçekleştirir. Örneğin,
CDate
sisteminizin yerel ayarına göre tarih biçimlerini tanır. Yerel ayarınız için gün, ay ve yılı doğru sırada sağlamanız gerekir, aksi durumda tarih doğru yorumlanmayabilir. Uzun tarih biçimi, "Çarşamba" gibi haftanın günü dizesi içeriyorsa tanınmaz.Bir değerin dize gösterimini yerel ayarınız tarafından belirtilenden farklı bir biçimde dönüştürmeniz gerekiyorsa, Visual Basic tür dönüştürme işlevlerini kullanamazsınız. Bunu yapmak için, bu değerin
ToString(IFormatProvider)
türünün veParse(String, IFormatProvider)
yöntemlerini kullanın. Örneğin, bir dizeyiDouble
öğesine dönüştürürken kullanın Double.Parse ve türDouble
değerini dizeye dönüştürürken kullanınDouble.ToString.
CType İşlevi
CType İşlevi ikinci bir bağımsız değişken typename
alır ve expression
typename
typename
geçerli bir dönüştürmenin bulunduğu herhangi bir veri türü, yapı, sınıf veya arabirim olabileceği için öğesine zorlama gerçekleştirir.
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.
CBool Örneği
Aşağıdaki örnek, ifadeleri değerlere dönüştürmek için Boolean
işlevini kullanırCBool
. bir ifade sıfır olmayan bir değer olarak değerlendirilirse, CBool
döndürür True
; aksi takdirde döndürür False
.
Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)
CByte Örneği
Aşağıdaki örnek, bir ifadeyi CByte
öğesine dönüştürmek için Byte
işlevini kullanır.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
CChar Örneği
Aşağıdaki örnek, bir ifadenin CChar
ilk karakterini bir String
Char
türe dönüştürmek için işlevini kullanır.
Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)
için CChar
giriş bağımsız değişkeninin veya String
veri türünde Char
olması gerekir. Sayısal veri türünü kabul edemeyeceğiniz için sayıyı CChar
karaktere dönüştürmek için kullanamazsınızCChar
. Aşağıdaki örnek, bir kod noktasını (karakter kodu) temsil eden bir sayı alır ve bunu ilgili karaktere dönüştürür. basamak dizesini InputBox almak, CInt
dizeyi türüne dönüştürmek ve ChrW
sayıyı türüne Integer
Char
dönüştürmek için işlevini kullanır.
Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)
CDate Örneği
Aşağıdaki örnek, dizeleri değerlere dönüştürmek için Date
işlevini kullanırCDate
. Genel olarak, tarih ve saatleri dize olarak sabit kodlama (bu örnekte gösterildiği gibi) önerilmez. Bunun yerine #Feb 12, 1969# ve #4:45:23 PM# gibi tarih değişmez değerlerini ve saat değişmez değerlerini kullanın.
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)
CDbl Örneği
Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)
CDec Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için Decimal
işlevini kullanırCDec
.
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)
CInt Örneği
Aşağıdaki örnek, bir değeri Integer
değerine dönüştürmek için işlevini kullanırCInt
.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
CLng Örneği
Aşağıdaki örnek, değerleri Long
öğesine dönüştürmek için işlevini kullanırCLng
.
Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)
CObj Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için Object
işlevini kullanırCObj
. Değişkenin Object
kendisi, kendisine atanan değere Double
işaret eden yalnızca dört baytlık bir işaretçi içerir.
Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)
CSByte Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için SByte
işlevini kullanırCSByte
.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
CShort Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için Short
işlevini kullanırCShort
.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
CSng Örneği
Aşağıdaki örnek, değerleri Single
öğesine dönüştürmek için işlevini kullanırCSng
.
Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)
CStr Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için String
işlevini kullanırCStr
.
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)
Aşağıdaki örnek, değerleri değerlere dönüştürmek Date
için String
işlevini kullanırCStr
.
Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)
CStr
her zaman geçerli yerel ayar için standart kısa biçimde bir Date
değer işler, örneğin, "15/6/2003 4:35:47 PM". Ancak, CStr
tarih için 1/1/0001 ve saat için 00:00:00 nötr değerlerini gizler.
tarafından CStr
döndürülen değerler hakkında daha fazla ayrıntı için bkz . CStr İşlevi için Dönüş Değerleri.
CUInt Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için UInteger
işlevini kullanırCUInt
.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için ULong
işlevini kullanırCULng
.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
CUShort Örneği
Aşağıdaki örnek, sayısal bir değeri öğesine dönüştürmek için UShort
işlevini kullanırCUShort
.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)