Я вам рекомендую посмотреть: как реализуются компараторы на c; каким образом происходит чтение/запись файла на c/c++ - Все там кастуется именно по такой схеме.
В шарпе майкрософт сделал другой однобайтовый тип и назвал его bytes.
Вы еще может считайте, что в шарпе вы напрямую с физической памятью работайте?)
Вот что говорит чат по этому поводу:
В других языках программирования, таких как Python, Java, JavaScript и Ruby, тип данных `char` обычно используется для представления символов, а не байтов.
Например, в Python тип данных `char` не поддерживается, вместо этого для представления символов используется тип данных `str`.
В Java и C# тип данных `char` представляет собой 16-битное беззнаковое целое число, которое используется для представления символов в Unicode.
В JavaScript и Ruby тип данных `char` не поддерживается, вместо этого для представления символов используется тип данных `string`.
Таким образом, в большинстве языков программирования тип данных `char` используется для представления символов, а не байтов. Однако, в некоторых языках, таких как C/C++, `char` может использоваться для представления байтов.
Только потому что в C он занимает 1 байт, и автоматически кастуется в uint8, и фактически равен ему, для универсальности используют его. Правильнее сказать, что там тоже нет отдельного char, а есть именно byte, который назван
А в других языках иначе.
Напрямую с памятью только ассемблер работает.
В остальном абстракции.
