私は、C# でかなり低レベルのアプリケーションを作成しており、多くのバイト ショートとビット操作を使用しています。私が気づいたことの 1 つは、C# がビット操作を行い、int 以外にブール演算子を使用することを好まないことです。これにより、コード全体で何百ものキャストが発生しました。「タイプ 'int' を 'ushort' に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)」などのエラー
byte b1 = 0x22;
byte b2 = 0x33;
ushort s1 = b1 << 8; // <-- Error Here
ushort s2 = s1 | b2; // <-- And Here
これにより、どこでもキャストを使用する必要があります。
byte b1 = 0x22;
byte b2 = 0x33;
ushort s1 = (ushort)(b1 << 8 | b2);
これはせいぜい警告です。b1 と b2 が ushort 型の場合でも、エラーになります。加算などの基本的な演算でも同じエラーが発生します。
ushort s1 = 0x22;
ushort s2 = s1 + 0x11; // <-- Oh Come On.
ushort s3 = 8;
ushort s4 = (s1 << s3 | s2); // <-- Still an Error.
とにかくこれについてはありますか、それとも、整数以外のものを使用する場合、またはこれが問題ではない場合に C++ を使用する場合、キャストは C# の生活の一部にすぎないという事実に自分自身を辞任する必要がありますか?