Ответ: Проблема в освении))
Всё это оффтоп, C# четко типизированный язык, однако никто немешает определить автоматические методы конвертации, например как определён почти для всех типов данных метод ToString() который автоматически вызывается при попытках работы с данными как со строкой.
Иными словами как и С++, язык позволяет подстраивать его под себя.
Учитывая что C# задумывался как язык написания приложений с высокой отказоустойчивостью, то такие требования к коду вполне нормальны, так же существует мнение что правильно спроектированное приложение содержит минимум мест в коде требующих приведения типов в сторону даунгрейда.
Так же всвязи с поддержкой многопоточности по-умолчанию, в языке под запретов обыкновенные указатели, однако им на замену пришли умные указатели, ссылки и прочие защищенные сущности. Однако в секции unsafe{ } возможно использование любых небезопасных конструкций.
__________________
|