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


Тип необязательного значения для необязательного параметра <имяПараметра> несовместим с CLS

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

Type of optional value for optional parameter <parametername> is not CLS-compliant

Процедура помечена как <CLSCompliant(True)>, но объявляет параметр Optional (Visual Basic) со значением по умолчанию несовместимого типа.

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

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

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

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

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

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

Чтобы исправить эту ошибку

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

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

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

См. также

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

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