void означает, что функция ничего не возвращает. Такие функции не получится использовать в выражениях и их результат нельзя никуда присвоить. Из-за этого многие обобщённые вещи приходится писать по два раза: один раз для обычных функций и ещё раз для функций, которые возвращают void.
Такие функции ещё называют процедурами.
unit же напротив является значением, просто всего с одним возможным вариантом. Компиляторы часто его оптимизируют так, что он занимает 0 байт и не требует никаких инструкций для передачи. То же самое с указателем на юнит.
Можно ли увидеть аналог пример кода на c# java с этим типом?
Нельзя, тк в их системе типов такого типа просто нет. Можно его имитировать при помощи пустой структуры например.
Но в мире дотнета есть f#, а в мире жавы - скала и котлин.
А еще, вот к примеру я придумал, почему нету(может этот тип и есть), К примеру в c# есть понятие Boxing типов при касте через object
int a=(int)(object)1;
Что довольно дорого и долго. С выделением памяти в куче.
А почему нету Типа, который ни чего не упаковывает, а просто передает двойное машинной слово? Ведь это прекрасно покроет все простые структурные типы, int char double., Enum, кортежи в 8 байт. А все остальное уже как объект.
1. А что делать если тебе боксинг явно нужен?
2. А где ты будешь метаданные передавать? Как в такой ситуации отличить тот же long от ссылки на объект?
3. По спецификации передаётся ссылка, а не двойное машинное слово.
И каким боком боксинг имеет отношение к юниту?