C# - ООП-язык прикладного уровня c автоматическим управлением памятью (сборка мусора), в котором постарались исправить недочёты языка Java. Как и Java, рассчитан на кодеров среднего уровня подготовки.
С++ - универсальный мультипарадигменный язык с ручным управлением памятью, сочетающий в себе как механизмы высокого (прикладное программирование), так и крайне низкого (системное программирование) уровня. Предназначен для кодеров намного более высокого уровня.
Внешне отличий немного, т.к. синтаксис обоих языков простроен на базе синтаксиса языка C.