Я думаю, что это действительно зависит от контекста, из которого задается вопрос.
Допустим, вы разрабатываете библиотеку для пользователей. Вы помечаете эту сборку атрибутом CLSCompliant
. Это означает, что компилятор заставит вас использовать функции, гарантированные CLR, и не сможет скомпилироваться, если вы используете функцию, специфичную для языка.
Когда рассматривается CLS-совместимая библиотека, .NET устраняет различие между языками. Каждый язык .NET должен быть CLS-совместимым, поэтому вы гарантированно поддержите все языки .NET одинаково.
Теперь предположим, что вы пишете свою библиотеку на VB .NET и решили использовать необязательные параметры, а не перегрузку методов. В этом случае .NET выделяет различие между языками, потому что необязательные параметры не совместимы с CLS (хотя C #, очевидно, поддерживает их в .NET 4.0.) Для тех, кто использует язык, который не поддерживает необязательные параметры, ваша библиотека может быть невозможно или в лучшем случае сложно использовать. Каждый язык имеет несколько функций, которые не совместимы с CLS, при их использовании пользователям некоторых языков .NET будет труднее использовать ваши библиотеки.
Итак, я чувствую, что это вопрос с подвохом. Если вы пишете CLS-совместимый код, тогда между языками .NET есть только синтаксические различия. Если нет, то вы можете написать методы, которые не могут использоваться некоторыми языками .NET.