C#におけるbyte + byteはint型になる理由とその対処方法


byte型は8ビットの符号なし整数を表し、値の範囲は0から255までです。一方、int型は32ビットの符号付き整数であり、値の範囲は-2,147,483,648から2,147,483,647までです。

byte型同士の加算演算子を使用すると、C#はそれぞれのbyte値をint型に自動的に変換してから加算を行います。そのため、結果もint型になります。

以下は、byte型同士の加算演算子がint型になる例です。

byte a = 10;
byte b = 20;
int result = a + b;
Console.WriteLine(result); // 結果: 30

もし、結果をbyte型として扱いたい場合は、明示的なキャストを行う必要があります。キャストを行うことで、int型からbyte型に変換されますが、注意が必要です。キャストを行う際に、値の範囲がbyte型の範囲内に収まっていることを確認する必要があります。もし範囲外の値がある場合は、予期しない結果が生じる可能性があります。

以下は、byte型として結果を扱うためのキャストの例です。

byte a = 10;
byte b = 20;
byte result = (byte)(a + b);
Console.WriteLine(result); // 結果: 30

以上が、C#においてbyte + byteがint型になる理由と、byte型として結果を扱う方法です。適切な場面でキャストを行い、意図した結果を得るようにしましょう。