Tür Dönüştürme İşlevleri (Visual Basic)
Bu işlevler satır içinde derlenmiş, yani dönüştürme kodu ifadeyi değerlendiren kodun bir parçası. Bazen dönüştürmeyi gerçekleştirmek için bir yordama çağrı yoktur ve bu da performansı artırır. Her işlev bir ifadeyi belirli bir veri türüne karşı kullanır.
Syntax
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
Gereklidir. 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üren değerin veri türünü belirler.
| İşlev adı | Dönüş veri türü | Bağımsız değişken expression aralığı |
|---|---|---|
CBool |
Boolean Veri Türü | Herhangi bir Char geçerli String veya sayısal ifade. |
CByte |
Byte Veri Türü | Byte.MinValue (0) ile Byte.MaxValue (255) (işaretsiz); kesirli parçalar yuvarlanmış. 1 15.8 Visual Basic başlayarak Visual Basic ile kayan nokta-bayt dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CByte 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 veya ifade; yalnızca ilk karakteri dönüştürülür; değer Char String String 0 ile 65535 (imzasız) arasında olabilir. |
CDate |
Date Veri Türü | Tarih ve saat için geçerli bir gösterim. |
CDbl |
Double Veri Türü | Negatif değerler için -1,79769313486231570E+308 ile -4,94065645841246544E-324; Pozitif değerler için 4,94065645841246544E-324 ile 1,79769313486231570E+308. |
CDec |
Decimal Veri Türü | Sıfır ölçekli sayılar için +/-79.228.162.514.264.337.593.543.950.335, yani ondalık basamak olmayan sayılar. 28 ondalık basamaklı sayılar için aralık +/-7,922816251426437593543950335'tir. Sıfır olmayan en küçük sayı 0,00000000000000000000000000000 (+/-1E-28) olur. |
CInt |
Integer Veri Türü | Int32.MinValue (-2.147.483.648) ile Int32.MaxValue (2.147.483.647); kesirli parçalar yuvarlanmış. 1 15.8 Visual Basic başlayarak Visual Basic ile kayan noktadan tamsayıya dönüştürmenin performansını iyiler. Daha fazla bilgi için Açıklamalar CInt 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 yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktadan 64 bit tamsayıya dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CLng bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
CObj |
Nesne Veri Türü | Herhangi bir geçerli ifade. |
CSByte |
SByte Veri Türü | SByte.MinValue (-128) ile SByte.MaxValue (127) arasında); kesirli parçalar yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktadan imzalı bayta dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CSByte 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 Int16.MaxValue (32.767) arasında); kesirli parçalar yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktadan 16 bit tamsayıya dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CShort 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 arasında; Pozitif değerler için 1,401298E-45 ile 3,402823E+38. |
CStr |
Dize Veri Türü | için CStr döndürür, bağımsız değişkenine expression bağlıdır. Bkz. CStr İşlevi için Dönüş Değerleri. |
CUInt |
UInteger Veri Türü | UInt32.MinValue (0) UInt32.MaxValue ile (4.294.967.295) (işaretsiz); kesirli parçalar yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktanın işaretsiz tamsayı dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CUInt 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) UInt64.MaxValue ile (18.446.744.073.709.551.615) (işaretsiz); kesirli parçalar yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktanın işaretsiz uzun tamsayı dönüştürme performansını iyiler. Daha fazla bilgi için Açıklamalar CULng 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) (işaretsiz); kesirli parçalar yuvarlanmış. 1 Visual Basic 15.8'den başlayarak Visual Basic işleviyle kayan noktanın performansını imzasız 16 bit tamsayı dönüştürmeye iyiler. Daha fazla bilgi için Açıklamalar CUShort bölümüne bakın. Örnek için CInt Örneği bölümüne bakın. |
1 Kesirli parçalar, 'nin yuvarlaması olarak adlandırılan özel bir yuvarlama türüne tabi olabilir. Daha fazla bilgi için bkz. "Açıklamalar".
Açıklamalar
Kural olarak, sınıf Visual Basic ya da tek bir tür yapısı veya .NET Framework gibi yöntem tercihi tür dönüştürme işlevlerini ToString() Convert kullanabilirsiniz. Bu Visual Basic işlevleri, kodla en iyi Visual Basic için tasarlanmıştır ve kaynak kodunuzun daha kısa ve daha kolay okunmalarını sağlar. Buna ek olarak, .NET Framework dönüştürme yöntemleri her zaman Visual Basic işlevleriyle aynı sonuçları üretmez, örneğin ' e Boolean Integer dönüştürürken. Daha fazla bilgi için bkz. Veri Türleri sorunlarını giderme.
Visual Basic 15.8'den başlayarak, aşağıdaki yöntemler tarafından döndürülen veya değerini tamsayı dönüştürme işlevlerinden (, , , ) biri için iletirken kayan noktadan tamsayıya dönüştürmenin performansı iyileştirilmiş Single Double CByte CShort CInt CLng CSByte CUShort CUInt CULng olur:
- 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 sağlayan kodun iki kat daha hızlı çalışmasına olanak sağlar. Aşağıdaki örnek, bu iyileştirilmiş kayan noktadan tamsayıya dönüştürmeleri gösterir:
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şlem sonucunda elde edilen sonucu varsayılan veri türü yerine belirli bir veri türüne zorlarken veri türü dönüştürme işlevlerini kullanabilirsiniz. Örneğin, tek duyarlıklı, çift duyarlıklı veya tamsayı aritmetiği normalde yer alan durumlarda ondalık
CDecaritmetik zorlamak için kullanın.Başarısız Dönüştürmeler. İşleve
expressiongeçirilen, dönüştürülecek veri türünün aralığının dışında ise bir OverflowException oluşur.Kesirli Parçalar. Bir tümleşmez değeri tamsayı türüne dönüştürerek tamsayı dönüştürme işlevleri ( , , , , , , ve ) kesirli bölümü kaldırır ve değeri en yakın
CByteCIntCLngCSByteCShortCUIntCULngCUShorttamsayıya yuvarlar.Kesirli bölüm tam olarak 0,5 ise tamsayı dönüştürme işlevi bunu en yakın even tamsayıya yuvarlar. Örneğin, 0,5 0'a yuvarlar ve her ikisi de 1,5 ve 2,5'i 2'ye yuvarlar. Buna bazen günlük yuvarlaması denir ve amacı, bu tür sayıları bir araya eklerken biriken sapmayı telafi etmektir.
CIntve , bir sayın kesirli kısmını yuvarlamakCLngInt yerine kesirli olan ve Fix işlevlerinden farklıdır. Ayrıca,FixIntve her zaman geçişle aynı veri türüne sahip bir değer geri döner.Tarih/Saat Dönüştürmeleri. Bir IsDate değerin tarih ve saat değerine dönüştürülenin olup olmadığını belirlemek için işlevini kullanın.
CDatetarih değişmez değerlerini ve saat değişmez değerlerini tanır, ancak sayısal değerleri tanımaz. 6.0 Visual BasicDate2005 veya sonraki sürümlerde Visual Basic bir değere dönüştürmek içinDateyöntemini DateTime.FromOADate kullanabilirsiniz.Nötr Tarih/Saat Değerleri. Tarih Veri Türü her zaman hem tarih hem de saat bilgilerini içerir. Visual Basic türü dönüştürme amacıyla 1/1/0001 (1 Ocak 1 Ocak), tarih için nötr değer, 00:00:00 (gece yarısı) değerini ise saat için nötr değer olarak kabul ediyor. Bir değeri
Datedizeye dönüştürürsanız,CStrelde edilen dizeye nötr değerler dahil değildir. Örneğin, bir dizeye#January 1, 0001 9:30:00#dönüştürürsanız sonuç "9:30:00 AM" olur; tarih bilgileri gizlenr. Ancak, tarih bilgileri hala özgün değerdeDatemevcuttur ve işlev gibi işlevlerle DatePart 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 bağlı olarak dönüştürme işlemleri gerçekleştirir. Örneğin,
CDatetarih biçimlerini sisteminizin yerel ayara göre tanır. Yerel ayarınız için doğru sırada gün, ay ve yıl girmelisiniz veya tarih doğru şekilde yorumlanmayabilir. Uzun tarih biçimi, "Çarşamba" gibi bir haftanın günü dizesi içeriyorsa tanınmıyor.bir değerin dize gösterimine ya da 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
ToString(IFormatProvider)Parse(String, IFormatProvider)değerin türünün ve yöntemlerini kullanın. Örneğin, bir Double.Parse dizeyi öğesine dönüştürürkenDoubleve Double.ToString türü bir değeri dizeye dönüştürürken kullanınDouble.
CType İşlevi
CType işlevi ikinci bir bağımsız değişken alır, typename ve, expression typename typename geçerli bir dönüştürme var olan herhangi bir veri türü, yapı, sınıf veya arabirim olabilir.
CTypeDiğer tür dönüştürme anahtar sözcükleriyle bir karşılaştırması için bkz. DirectCast Işleci ve TryCast İşleci.
CBool örneği
Aşağıdaki örnek, CBool ifadeleri değerlere dönüştürmek için işlevini kullanır Boolean . Bir ifade sıfır dışında bir değer olarak değerlendirilirse, değerini 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, CByte bir ifadeyi öğesine dönüştürmek için işlevini kullanır Byte .
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, CChar bir ifadenin ilk karakterini bir türe dönüştürmek için işlevini kullanır String Char .
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)
Giriş bağımsız değişkeni CChar veri türünde Char veya olmalıdır String . CChar CChar Sayısal bir veri türü kabul edilemediğinden bir sayıyı karaktere dönüştürmek için kullanamazsınız. Aşağıdaki örnek, bir kod noktasını temsil eden bir sayı edinir (karakter kodu) ve karşılık gelen karaktere dönüştürür. Bu, InputBox CInt dizeyi türe dönüştürmek Integer ve ChrW sayıyı türe dönüştürmek için, basamak dizesini almak için işlevini kullanır Char .
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, CDate dizeleri değerlere dönüştürmek için işlevini kullanır Date . Genel olarak, sabit kodlama tarihleri ve saatleri dizeler (Bu örnekte gösterildiği gibi) önerilmez. #Feb 12, 1969 # ve #4:45:23 PM # gibi tarih değişmez değerlerini ve zaman 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, CDec bir sayısal değeri öğesine dönüştürmek için işlevini kullanır Decimal .
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, CInt bir değeri öğesine dönüştürmek için işlevini kullanır Integer .
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, CLng değerlerini değerine dönüştürmek için işlevini kullanır Long .
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, CObj bir sayısal değeri öğesine dönüştürmek için işlevini kullanır Object . ObjectDeğişken kendisine atanan değere işaret eden yalnızca dört baytlık bir işaretçi içerir Double .
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, CSByte bir sayısal değeri öğesine dönüştürmek için işlevini kullanır SByte .
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, CShort bir sayısal değeri öğesine dönüştürmek için işlevini kullanır Short .
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, CSng değerlerini değerine dönüştürmek için işlevini kullanır Single .
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, CStr bir sayısal değeri öğesine dönüştürmek için işlevini kullanır String .
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, CStr değerleri değerlere dönüştürmek için işlevini kullanır Date String .
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 Date geçerli yerel ayar için standart kısa biçimde (örneğin, "6/15/2003 4:35:47 PM") bir değer oluşturur. Ancak, CStr Tarih ve 00:00:00 için 1/1/0001 nötr değerlerini saat için bastırır.
Tarafından döndürülen değerler hakkında daha fazla ayrıntı için CStr bkz. CStr Işlevi Için dönüş değerleri.
CUInt örneği
Aşağıdaki örnek, CUInt bir sayısal değeri öğesine dönüştürmek için işlevini kullanır UInteger .
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
Külörnek örneği
Aşağıdaki örnek, CULng bir sayısal değeri öğesine dönüştürmek için işlevini kullanır ULong .
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, CUShort bir sayısal değeri öğesine dönüştürmek için işlevini kullanır UShort .
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)