byte (C# リファレンス)byte (C# Reference)

byte は、次の表に示された値を格納する整数型を示します。byte denotes an integral type that stores values as indicated in the following table.

Type 範囲Range サイズSize .NET 型.NET type
byte 0 ~ 2550 to 255 符号なし 8 ビット整数Unsigned 8-bit integer System.Byte

リテラルLiterals

byte 変数を宣言し、10 進リテラル、16 進リテラル、または (C# 7.0 以降) バイナリ リテラルを割り当てることによって初期化できます。You can declare and initialize a byte variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7.0) a binary literal to it. 整数リテラルが byte の範囲外にある場合 (つまり、Byte.MinValue より小さいか、Byte.MaxValue より大きい場合)、コンパイル エラーが発生します。If the integer literal is outside the range of byte (that is, if it is less than Byte.MinValue or greater than Byte.MaxValue), a compilation error occurs.

次の例では、整数 201 を 10 進リテラル、16 進リテラル、バイナリ リテラルで表したものが、int から byte 値に暗黙的に変換されています。In the following example, integers equal to 201 that are represented as decimal, hexadecimal, and binary literals are implicitly converted from int to byte values.

byte byteValue1 = 201;
Console.WriteLine(byteValue1);

byte byteValue2 = 0x00C9;
Console.WriteLine(byteValue2);

byte byteValue3 = 0b1100_1001;
Console.WriteLine(byteValue3);
// The example displays the following output:
//          201
//          201
//          201

注意

16 進リテラルを表すにはプレフィックス 0x または 0X を使い、バイナリ リテラルを表すにはプレフィックス 0b または 0B を使います。You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. 10 進リテラルには、プレフィックスはありません。Decimal literals have no prefix.

C# 7.0 以降では、読みやすさを強化するためにいくつかの機能が追加されています。Starting with C# 7.0, a couple of features have been added to enhance readability.

  • C# 7.0 では、桁区切り記号としてアンダースコア文字 (_) が使用できます。C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • C# 7.2 では、プレフィックスの後に、_ をバイナリまたは 16 進リテラルの桁区切り記号として使用できます。C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. 10 進リテラルは先頭にアンダー スコアを持つことはできません。A decimal literal isn't permitted to have a leading underscore.

以下にいくつか例を示します。Some examples are shown below.

byte byteValue4 = 0b1100_1001;
Console.WriteLine(byteValue4);

byte byteValue5 = 0b_1100_1001;
Console.WriteLine(byteValue5);       // C# 7.2 onwards
// The example displays the following output:
//          201
//          201

変換Conversions

byte から shortushortintuintlongulongfloatdoubledecimal への暗黙の型変換が組み込まれています。There is a predefined implicit conversion from byte to short, ushort, int, uint, long, ulong, float, double, or decimal.

より大きな記憶領域のサイズを持つ、リテラル以外の数値型を暗黙的に byte に変換することはできません。You cannot implicitly convert non-literal numeric types of larger storage size to byte. 整数型の記憶域サイズの詳細については、「整数型の一覧表」を参照してください。For more information on the storage sizes of integral types, see Integral Types Table. たとえば、2 つの byte 変数 xy があるとします。Consider, for example, the following two byte variables x and y:

byte x = 10, y = 20;  

次の代入ステートメントは、代入演算子の右側にある算術式が既定で int に評価されるため、コンパイル エラーになります。The following assignment statement will produce a compilation error, because the arithmetic expression on the right-hand side of the assignment operator evaluates to int by default.

// Error: conversion from int to byte:  
byte z = x + y;  

この問題を解決するには、キャストを使用します。To fix this problem, use a cast:

// OK: explicit conversion:  
byte z = (byte)(x + y);  

ただし、次のステートメントは使用できます。このステートメントでは、変換先の変数の記憶領域サイズは元のサイズ以上になります。It is possible though, to use the following statements where the destination variable has the same storage size or a larger storage size:

int x = 10, y = 20;  
int m = x + y;  
long n = x + y;  

浮動小数点型から byte への暗黙の型変換はありません。Also, there is no implicit conversion from floating-point types to byte. たとえば、次のステートメントは、明示的なキャストを使用しない場合、コンパイラ エラーになります。For example, the following statement generates a compiler error unless an explicit cast is used:

// Error: no implicit conversion from double:  
byte x = 3.0;   
// OK: explicit conversion:  
byte y = (byte)3.0;  

オーバーロードされたメソッドを呼び出すときは、キャストを使用する必要があります。When calling overloaded methods, a cast must be used. たとえば、byte パラメーターと int パラメーターを使用したオーバーロードされたメソッドがあるとします。Consider, for example, the following overloaded methods that use byte and int parameters:

public static void SampleMethod(int i) {}  
public static void SampleMethod(byte b) {}  

byte キャストを使用すると、正しい型が呼び出されます。次に例を示します。Using the byte cast guarantees that the correct type is called, for example:

// Calling the method with the int parameter:  
SampleMethod(5);  
// Calling the method with the byte parameter:  
SampleMethod((byte)5);  

浮動小数点型と整数型の混在する算術式の詳細については、「float」と「double」を参照してください。For information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

暗黙的な数値変換規則について詳しくは、「暗黙的な数値変換の一覧表」をご覧ください。For more information on implicit numeric conversion rules, see the Implicit Numeric Conversions Table.

C# 言語仕様C# Language Specification

詳細については、「C# 言語仕様」の整数型に関するセクションを参照してください。For more information, see Integral types in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

参照See Also