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 BooleanInteger. 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) CULnggeçirdiğinizde Single kayan noktadan tamsayıya dönüştürmenin performansı iyileştirilir:

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, CULngve CUShort) 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 ve CLng bir sayının Int kesirli kısmını yuvarlama yerine kesen ve Fix işlevlerinden farklıdır. Ayrıca ve FixInt 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.0 Date değerini Visual Basic 2005 veya sonraki sürümlerindeki bir Date 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ün Date 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 ve Parse(String, IFormatProvider) yöntemlerini kullanın. Örneğin, bir dizeyi Doubleöğesine dönüştürürken kullanın Double.Parse ve tür Double değerini dizeye dönüştürürken kullanınDouble.ToString.

CType İşlevi

CType İşlevi ikinci bir bağımsız değişken typenamealır ve expressiontypenametypename 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 Byteiş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 StringChar 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 Stringveri 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 IntegerChardö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 Decimaliş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 Integerdeğ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 Objectiş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 SByteiş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 Shortiş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 Stringiş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 CStrdö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 UIntegeriş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 ULongiş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 UShortiş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)

Ayrıca bkz.