Существуют ли какие-либо не совместимые с CLS языки.NET?

Существуют ли в наши дни какие-либо не совместимые с CLS языки.NET? Похоже, что каждый управляемый язык, поставляемый "из коробки" с VS2012, поддерживает целочисленные типы без знака, так что, практически говоря, сколько проблем может возникнуть при использовании "unsigned" в сигнатурах открытых / защищенных типов для вещей, идущих вперед?

Похоже, что CLR, CTS и связанные с ними технологии в значительной степени "сделаны" на этом этапе, поэтому возникает вопрос, насколько полно соответствие CLS для "современного" кода.NET.

Мы прыгаем через обручи CLS теперь просто вне импульса?

1 ответ

Соответствие CLS является свойством кода, а не языка. Была ранняя версия VB.NET, в которой нельзя было случайно написать несовместимый код. Это продолжалось недолго, оно получило поддержку целочисленных типов без знака где-то в 2005 году.

Это все еще актуально, вы все еще можете написать библиотеку, которая могла бы использоваться на языке, который был портирован на.NET и не поддерживает целые числа без знака или нечувствителен к регистру, и так далее. Подход прост, вы просто избегаете использования несовместимых функций в вашем коде, и ваша сборка должна работать просто отлично. Что очень легко сделать, добавьте эту строку кода в любое место:

 [assembly:CLSCompliant(true)]

И компилятор выдаст вам предупреждение, когда вы нарушите правила.

Другие вопросы по тегам