Чтобы ответить на вторую часть вопроса:
VB.NET и C # в большинстве случаев одинаковы.
Они компилируются в один и тот же код конца и имеют одинаковую производительность (если вы измените проверку переполнения для каждого на совпадение). Вот некоторые из отличий:
VB.NET
- без учета регистра
- Более многословно, чем C #
- Унаследовав плохую репутацию от своих предшественников BASIC, многие программисты (в основном, C ++, я думаю), похоже, смотрят на VB.NET как на низшие.
- Реже используется, чем C #
- Имеет "With ... End With", что я действительно желаю, чтобы C # имел.
- По умолчанию включена проверка на переполнение
- "Мое" пространство имен
C #
- Чувствительный к регистру
- Немного худшее удобство использования. Используя C # и VB в VS08, я обнаружил, что C # intellisense намного менее интеллектуален.
- C # требует от вас гораздо большего приведения типов данных, хотя это обеспечивает большую гибкость.
- Более популярно
- Тесно связан с другими языками, такими как Java
- Имеет несколько вещей, которых нет у VB, например, ключевое слово unsafe.
- / * Простые многострочные комментарии * /
- По умолчанию отключена проверка переполнения
- Нет "Моего" пространства имен
Существует очень немного сценариев, в которых было бы важно выбрать VB.NET или C #, основные различия заключаются просто в синтаксисе, а также в том, что многие программисты склонны считать VB.NET «низшим». (Я думаю, это просто язык программирования, но, к сожалению, так оно и есть)
Тем не менее, вероятно, стоит перейти с VB.NET на C #, потому что:
- Изменение не будет слишком сложным, поскольку они во многом одинаковы
- Изучение другого языка всегда хорошая вещь
- Как вы сказали, в C # доступно больше учебных пособий, которые сэкономят вам перевод кода
- С точки зрения карьеры, возможность сказать, что вы сделали что-то на C #, будет полезна
Почему бы не дать ему раскрутиться? Единственный недостаток, о котором я могу подумать, это то, что вы изучаете две вещи одновременно (SDL / SlimDX + C #), но на самом деле C # очень прост.