ULong データ型 (Visual Basic)

0 から 18,446,744,073,709,551,615 (1.84 x 10 ^ 19 以上) までの値の範囲の符号なし 64 ビット (8 バイト) の整数を保持します。

Remarks

ULong データ型は、UInteger には大きすぎるバイナリ データや、可能な限り最大の符号なし整数値を格納する場合に使用します。

ULong の既定値は 0 です。

リテラルの代入

ULong 変数を宣言し、10 進リテラル、16 進リテラル、8 進リテラル、または (Visual Basic 2017 以降) バイナリ リテラルを代入することによって初期化できます。 整数リテラルが ULong の範囲外にある場合 (つまり、UInt64.MinValue より小さいか、UInt64.MaxValue より大きい場合)、コンパイル エラーが発生します。

次の例では、整数 7,934,076,125 を 10 進リテラル、16 進リテラル、バイナリ リテラルで表したものが、ULong 値に割り当てられています。

Dim ulongValue1 As ULong = 7934076125
Console.WriteLine(ulongValue1)

Dim ulongValue2 As ULong = &H0001D8e864DD
Console.WriteLine(ulongValue2)

Dim ulongValue3 As ULong = &B0001_1101_1000_1110_1000_0110_0100_1101_1101
Console.WriteLine(ulongValue3)
' The example displays the following output:
'          7934076125
'          7934076125
'          7934076125

注意

16 進リテラルを表すにはプレフィックス &h または &H を使い、バイナリ リテラルを表すにはプレフィックス &b または &B を使い、8 進リテラルを表すにはプレフィックス &o または &O を使います。 10 進リテラルには、プレフィックスはありません。

Visual Basic 2017 以降では、次の例に示すように、アンダースコア文字 _ を桁区切り記号として使って読みやすくすることもできます。

Dim longValue1 As Long = 4_294_967_296
Console.WriteLine(longValue1)

Dim longValue2 As Long = &H1_0000_0000
Console.WriteLine(longValue2)

Dim longValue3 As Long = &B1_0000_0000_0000_0000_0000_0000_0000_0000
Console.WriteLine(longValue3)
' The example displays the following output:
'          4294967296
'          4294967296
'          4294967296

Visual Basic 15.5 以降では、プレフィックスと 16 進数、2 進数、または 8 進数の間に先頭の区切り記号としてアンダースコア文字 (_) を使用することもできます。 次に例を示します。

Dim number As ULong = &H_F9AC_0326_1489_D68C

アンダースコア文字を先頭の区切り記号として使用するには、以下の要素を Visual Basic プロジェクト (*.vbproj) ファイルに追加する必要があります。

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

詳細については、「Visual Basic 言語バージョンの選択」を参照してください。

数値リテラルには、次の例に示すように、UL または ul型文字を含めて、ULong データ型を表すこともできます。

Dim number = &H_00_00_0A_96_2F_AC_14_D7ul

プログラミングのヒント

  • 負の数値。 ULong は符号なしの型であるため、負の数を表すことはできません。 ULong 型に評価される式で、単項マイナス (-) 演算子を使用すると、Visual Basic で式が最初に Decimal に変換されます。

  • CLS 準拠。 ULong データ型は共通言語仕様 (CLS) に含まれないため、CLS に準拠しているコードではそれを使用するコンポーネントを使用できません。

  • 相互運用の考慮事項。 オートメーション オブジェクトや COM オブジェクトなど、.NET Framework 用に作成されていないコンポーネントとやり取りする場合、ulong などの型は、他の環境ではデータ幅 (32 ビット) が異なる可能性があることに注意してください。 そのようなコンポーネントに 32 ビットの引数を渡す場合は、Visual Basic のマネージド コードで、ULong ではなく UInteger として宣言します。

  • 拡大変換。 ULong データ型は、DecimalSingle、および Double に拡大変換されます。 これは、System.OverflowException エラーを発生させることなく、これらの型のいずれかに ULong を変換できることを意味します。

  • 型宣言文字。 あるリテラルにリテラルの型文字 UL を付けると、そのリテラルは ULong データ型に変換されます。 ULong には識別子の型文字がありません。

  • Framework のデータ型 .NET Framework において対応する型は、System.UInt64 構造体です。

関連項目