これらの関数はインラインでコンパイルされます。つまり、変換コードは式を評価するコードの一部です。 場合によっては、変換を実行するプロシージャの呼び出しがないため、パフォーマンスが向上します。 各関数は、式を特定のデータ型に強制します。
構文
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)
部分
expression
必須。 ソース データ型の任意の式。
戻り値のデータ型
関数名は、次の表に示すように、返される値のデータ型を決定します。
| 関数名 | データ型を返す | 引数の範囲expression |
|---|---|---|
CBool |
Boolean Data データ型 | 任意の有効な Char または String または数値式。 |
CByte |
バイト データ型 |
Byte.MinValue (0) ~ Byte.MaxValue (255) (符号なし)。小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CByte 関数を使用して浮動小数点からバイトへの変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CChar |
Char データ型 | 任意の有効な Char または String 式。 String の最初の文字のみが変換されます。値は 0 から 65535 (符号なし) にすることができます。 |
CDate |
日付データ型 | 日付と時刻の有効な表現。 |
CDbl |
Double データ型 | -1.79769313486231570E+308 ~ -4.94065645841246544E-324 負の値。4.94065645841246544E-324 から 1.79769313486231570E+308 (正の値の場合)。 |
CDec |
10 進データ型 | +/-79,228,162,514,264,337,593,543,950,335 (小数点以下の桁数のない数値) の場合。 小数点以下 28 桁の数値の場合、範囲は +/-7.9228162514264337593543950335 です。 可能な最小の 0 以外の数値は 0.000000000000000000000000000000001 です (+/-1E-28)。 |
CInt |
整数データ型 |
Int32.MinValue (-2,147,483,648) ~ Int32.MaxValue (2,147,483,647)。小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CInt 関数を使用して浮動小数点から整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CLng |
Long データ型 |
Int64.MinValue (-9,223,372,036,854,775,808) ~ Int64.MaxValue (9,223,372,036,854,775,807); 小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CLng 関数を使用して浮動小数点から 64 ビット整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CObj |
オブジェクト データ型 | 任意の有効な式。 |
CSByte |
SByte データ型 |
SByte.MinValue (-128) ~ SByte.MaxValue (127)。小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CSByte 関数を使用して浮動小数点から符号付きバイトへの変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CShort |
Short データ型 |
Int16.MinValue (-32,768) ~ Int16.MaxValue (32,767)。小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CShort 関数を使用して浮動小数点から 16 ビットの整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CSng |
単一データ型 | 負の値の場合は -3.402823E+38 ~ -1.401298E-45。正の値の場合は 1.401298E-45 ~ 3.402823E+38。 |
CStr |
文字列データ型 |
CStrの戻り値は、expression引数によって異なります。
CStr 関数の戻り値を参照してください。 |
CUInt |
UInteger データ型 |
UInt32.MinValue (0) ~ UInt32.MaxValue (4,294,967,295) (符号なし)、小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CUInt 関数を使用して浮動小数点から符号なし整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CULng |
ULong データ型 |
UInt64.MinValue (0) ~ UInt64.MaxValue (18,446,744,073,709,551,615) (符号なし)。小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CULng 関数を使用して浮動小数点から符号なし長整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
CUShort |
UShort データ型 |
UInt16.MinValue (0) ~ UInt16.MaxValue (65,535) (符号なし)、小数部は丸められます。1 Visual Basic 15.8 以降、Visual Basic では、 CUShort 関数を使用して浮動小数点から符号なし 16 ビット整数への変換のパフォーマンスが最適化されます。詳細については、「 解説 」セクションを参照してください。 例については、「 CInt の例 」セクションを参照してください。 |
1 小数部は、銀行家の丸めと呼ばれる特殊な種類 の丸め処理を受けることができます。 詳細については、「解説」を参照してください。
注釈
原則として、visual Basic 型変換関数は、ToString() クラスまたは個々の型構造またはクラスで、Convertなどの .NET Framework メソッドを優先して使用する必要があります。 Visual Basic 関数は、Visual Basic コードとの最適な対話を目的として設計されており、ソース コードを短く読みやすくします。 また、.NET Framework 変換メソッドでは、 Boolean を Integer に変換する場合など、Visual Basic 関数と同じ結果が生成されるとは限りません。 詳細については、「 データ型のトラブルシューティング」を参照してください。
Visual Basic 15.8 以降では、次のメソッドによって返される Single または Double 値を整数変換関数 (CByte、 CShort、 CInt、 CLng、 CSByte、 CUShort、 CUInt、 CULng) のいずれかに渡すと、浮動小数点から整数への変換のパフォーマンスが最適化されます。
- 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)
この最適化により、多数の整数変換を実行するコードは最大で 2 倍の速度で実行できます。 次の例は、これらの最適化された浮動小数点から整数への変換を示しています。
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
行動
強制。 一般に、データ型変換関数を使用して、操作の結果を既定のデータ型ではなく特定のデータ型に強制することができます。 たとえば、単精度、倍精度、または整数の算術演算が通常行われる場合に、
CDecを使用して 10 進数の算術演算を強制します。失敗した変換。 関数に渡される
expressionが、変換先のデータ型の範囲外にある場合は、 OverflowException が発生します。小数部。 整数以外の値を整数型に変換すると、整数変換関数 (
CByte、CInt、CLng、CSByte、CShort、CUInt、CULng、およびCUShort) によって小数部が削除され、値が最も近い整数に丸められます。小数部が正確に 0.5 の場合、整数変換関数はそれを最も近い偶数の整数に丸めます。 たとえば、0.5 は 0 に、1.5 と 2.5 はどちらも 2 に丸めます。 これは 銀行家の丸めと呼ばれることもあります。その目的は、そのような数値を多数加算するときに蓄積する可能性のあるバイアスを補うことです。
CIntCLngは、数値の小数部を丸めるのではなく切り捨てるInt関数とFix関数とは異なります。 また、FixとIntは、渡すと常に同じデータ型の値を返します。日付/時刻の変換。 IsDate関数を使用して、値を日付と時刻に変換できるかどうかを判断します。
CDateは、日付リテラルと時刻リテラルを認識しますが、数値は認識しません。 Visual Basic 6.0Date値を Visual Basic 2005 以降のバージョンのDate値に変換するには、 DateTime.FromOADate メソッドを使用できます。ニュートラルな日付/時刻値。 日付データ型には、常に日付と時刻の両方の情報が含まれます。 型変換の目的で、Visual Basic では、1/1/0001 (年 1 月 1 日) が日付の ニュートラル値 、00:00:00 (午前 0 時) が時間のニュートラル値と見なされます。
Date値を文字列に変換する場合、CStr結果の文字列にニュートラル値は含まれません。 たとえば、#January 1, 0001 9:30:00#を文字列に変換すると、結果は "9:30:00 AM" になります。日付情報は抑制されます。 ただし、日付情報は元のDate値に残っており、 DatePart 関数などの関数を使用して回復できます。カルチャの感度。 文字列を含む型変換関数は、アプリケーションの現在のカルチャ設定に基づいて変換を実行します。 たとえば、
CDateは、システムのロケール設定に従って日付形式を認識します。 ロケールの正しい順序で日、月、年を指定する必要があります。または、日付が正しく解釈されない可能性があります。 "Wednesday" などの曜日の文字列が含まれている場合、長い日付形式は認識されません。ロケールで指定された形式以外の形式の値を文字列形式に変換する必要がある場合は、Visual Basic 型変換関数を使用できません。 これを行うには、その値の型の
ToString(IFormatProvider)メソッドとParse(String, IFormatProvider)メソッドを使用します。 たとえば、文字列をDouble.Parseに変換するときはDoubleを使用し、Double.ToString型の値を文字列に変換するときはDoubleを使用します。
CType 演算子
CType 演算子は、typenameに対して 2 番目の引数、typename、および強制expressionを受け取ります。typenameには、有効な変換が存在する任意のデータ型、構造体、クラス、またはインターフェイスを指定できます。
CTypeと他の型変換キーワードの比較については、DirectCast 演算子と TryCast 演算子に関するページを参照してください。
CBool の例
次の例では、 CBool 関数を使用して式を Boolean 値に変換します。 式が 0 以外の値に評価された場合、 CBool は Trueを返します。それ以外の場合は、 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 の例
次の例では、 CByte 関数を使用して式を 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 の例
次の例では、 CChar 関数を使用して、 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)
CCharの入力引数は、データ型CharまたはStringである必要があります。
CCharを使用して数値を文字に変換することはできません。CCharは数値データ型を受け入れることができません。 次の例では、コード ポイント (文字コード) を表す数値を取得し、対応する文字に変換します。
InputBox関数を使用して数字の文字列を取得し、CInt文字列をInteger型に変換し、ChrW数値を 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 の例
次の例では、 CDate 関数を使用して文字列を Date 値に変換します。 一般に、日付と時刻を文字列としてハードコーディングすることはお勧めしません (この例を参照)。 代わりに、日付リテラルと時刻リテラル (#Feb 12、1969#、#4:45:23 PM# など) を使用します。
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 の例
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 の例
次の例では、 CDec 関数を使用して数値を 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 の例
次の例では、 CInt 関数を使用して値を 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 の例
次の例では、 CLng 関数を使用して値を 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 の例
次の例では、 CObj 関数を使用して数値を Objectに変換します。
Object変数自体には、割り当てられたDouble値を指す 4 バイトポインターのみが含まれます。
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 の例
次の例では、 CSByte 関数を使用して数値を 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 の例
次の例では、 CShort 関数を使用して数値を Shortに変換します。
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
CSng の例
次の例では、 CSng 関数を使用して値を 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 の例
次の例では、 CStr 関数を使用して数値を 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)
次の例では、 CStr 関数を使用して 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 は常に、現在のロケールの標準の短い形式で Date 値をレンダリングします (例: "6/15/2003 4:35:47 PM")。 ただし、 CStr では、日付の場合は 1/1/0001、時刻の場合は 00:00:00 の ニュートラル値 が抑制されます。
CStrによって返される値の詳細については、「CStr 関数の戻り値」を参照してください。
CUInt の例
次の例では、 CUInt 関数を使用して数値を UIntegerに変換します。
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng の例
次の例では、 CULng 関数を使用して数値を 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 の例
次の例では、 CUShort 関数を使用して数値を UShortに変換します。
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
こちらも参照ください
.NET