Важно узнать и понять, что на самом деле происходит в машине . Память, процессор, ввод / вывод, устройства. Чтобы понять стек, кучу выделения, структуру структуры в памяти, вызовы виртуальных методов, потоки, кэш и тому подобное. C и C ++ намного ближе к металлу, и вы будете вынуждены понимать эти концепции. CLR находится на более высоком уровне абстракции и обычно прячется за кулисами. Но идея в том, что, как только вы узнаете , как работает машина, довольно легко увидеть за дымом и зеркалами CLR и понять, что происходит. Это очень помогает при отладке проблемы или при разработке приложения, когда вы понимаете систему и используете ее в своих интересах. Если вы просто изучите высокоуровневый управляемый стек, то это всегда будет своего рода VooDoo, и вы попадете в ловушку ошибочных предположений и неверных решений. Вот почему я считаю, что вы увлечены этой областью, которую вы должны изучить и использовать немного C / C ++.
Аналогичное рассуждение, но более слабое, касается нативного API ОС (т. Е. Win32 в Windows) по сравнению с управляемым эквивалентом. Первоначально фреймворк .Net представлял собой тонкую оболочку над Win32 API, и это было видно везде, где вам нужно было взять дескриптор из вашего управляемого объекта и выполнить p-Invoke, чтобы использовать какой-то API, оставленный нашим в управляемых библиотеках. , Но идеи эволюционировали, теперь есть целые фреймворки, которые выставляются только как управляемые (например, WCF), и вы можете проделать долгий путь при использовании Stream.BeginRead без зная GetQueuedCompletionStatus существует.
Кроме этого, изучение C ++ вместо изучения C # в значительной степени зависит от изучения стандартных библиотек и управляемой среды. Стандартные библиотеки намного более веселые imho, и они быстрее познакомят вас с передовыми концепциями. Вы можете перенести опыт понимания алгоритмов STL и удовольствие от того, чтобы ваш первый mem_fun_p позже работал с управляемым кодом (лямбда-выражения, linq).
Таким образом, я хочу сказать, что перед тем, как перейти к C #, нужно понимать C / C ++. Lerning C # и начало с использованием управляемого фреймворка easy . Потребуются годы, чтобы освоить , и похоже, что через несколько лет он будет на шаг впереди вас с новыми выпусками, которые сделают старую часть библиотеки устаревшей. Если вы в первый раз включите звуковой контроль над тем, что происходит внизу, у вас может не быть времени, чтобы наверстать упущенное позже.