Поделиться через


Тип параметра <имяПараметра> не является CLS-совместимым

Обновлен: Ноябрь 2007

Type of parameter '<parametername>' is not CLS-compliant

Процедура помечена как <CLSCompliant(True)>, но объявляет параметр с типом, который помечен как <CLSCompliant(False)>, не помечен или не квалифицирован, так как он является несовместимым типом.

Для совместимости процедуры с Спецификация CLS (CLS) она должна использовать только CLS–совместимые типы. Это относится к типам параметров, возвращаемому типу и типам всех ее локальных переменных.

Следующие типы данных Visual Basic не являются CLS–совместимыми:

При применении CLSCompliantAttribute к элементу программирования параметру isCompliant атрибута присваивается значение True или False, чтобы указать соответствие или несоответствие. Значение по умолчанию для этого параметра отсутствует, поэтому значение необходимо указать.

Если к элементу не применяется атрибут CLSCompliantAttribute, элемент считается несовместимым.

По умолчанию это сообщение является предупреждением. Дополнительные сведения о скрытии предупреждений или их обработке как ошибок см. в разделе Настройка предупреждений в Visual Basic.

Идентификатор ошибки: BC40028

Исправление этой ошибки

  • Если процедура должна принимать параметр этого конкретного типа, то удалите CLSCompliantAttribute. Процедура не может быть CLS–совместимой.

  • Если процедура должна быть CLS–совместимой, то измените тип этого параметра на ближайший CLS–совместимый тип. Например, вместо UInteger можно использовать Integer, если не требуется значение диапазона, превышающее 2 147 483 647. Если необходим расширенный диапазон, можно заменить UInteger на Long.

  • Если производится взаимодействие с объектами автоматизации или COM–объектами, то имейте в виду, что некоторые типы имеют ширину данных, отличающуюся от ширины данных в .NET Framework . Например, в других средах тип int часто является 16-разрядным. Если из таких компонентов принимается 16-разрядное целое число, следует объявить его в качестве Short вместо Integer в управляемом коде Visual Basic.

См. также

Основные понятия

Написание CLS-совместимого кода