long (C# リファレンス)
long キーワードは、次の表に示されたサイズと範囲に従って値を格納する整数型を表します。
型 |
範囲 |
サイズ |
.NET Framework 型 |
---|---|---|---|
long |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
符号付き 64 ビット整数 |
リテラル
long 変数の宣言と初期化の例を次に示します。
long long1 = 4294967296;
サフィックスがない整数リテラルの型は、int、uint、long、ulong のうち、その整数の値を表すことができる最も範囲の狭い型になります。 上の例では、uint の範囲を超えているので、long 型になります。整数型の記憶サイズについては、「整数型の一覧表 (C# リファレンス)」を参照してください。
また、long 型にサフィックス L を付けることもできます。次に例を示します。
long long2 = 4294967296L;
サフィックス L を使用した場合、リテラル整数の型は、サイズに応じて long または ulong のいずれかに決まります。 この例では、ulong の範囲よりも小さいため、long になります。
サフィックスは、オーバーロードされたメソッドの呼び出しでよく使われます。 たとえば、long パラメーターと int パラメーターを使用したオーバーロードされたメソッドがあるとします。
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
サフィックス L を使用すると、正しい型が呼び出されます。次に例を示します。
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
long 型とその他の数値の整数型を同じ式で使用できます。その場合、式は long として評価されます。関係式またはブール式の場合は bool として評価されます。 long として評価される式の例を次に示します。
898L + 88
注意
小文字の "l" もサフィックスとして使用できます。 ただし、文字 "l" は数字の "1" と混同しやすいので、コンパイラから警告が出されます。 明確にするには "L" を使用します。
浮動小数点型と整数型の混在する算術式の詳細については、「float」と「double」を参照してください。
変換
long から float、double、または decimal への暗黙の型変換が組み込まれています。 その他の型の場合は、キャストを使用する必要があります。 たとえば、次のステートメントは、明示的なキャストを使用しない場合、コンパイル エラーになります。
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
sbyte、byte、short、ushort、int、uint、または char から long への暗黙の型変換が組み込まれています。
また、浮動小数点型から long への暗黙の型変換が行われないことに注意してください。 たとえば、次のステートメントは、明示的なキャストを使用しない場合、コンパイラ エラーになります。
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
C# 言語仕様
詳細については、「C# 言語仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。