これはばかげた質問のように感じますが、答えが見えないようです。私はUInt64を持っていますが、これは最大値が
UInt64.MaxValue 18446744073709551615
ただし、適度なサイズの数値を割り当てようとすると、「チェックモードでコンパイル時に操作がオーバーフローします」というオーバーフローエラーが発生します。「チェックされていない」ブロックでラップすると、コンパイルされ、この変数がゼロであるかのように実行されます。
UInt64 value1 = 1073741824 * 8; // Compile error CS0220
UInt64 value2 = 8589934592; // Actual value - no error
なぜこれが起こっているのですか?