Тип необязательного значения для необязательного параметра <имяПараметра> несовместим с 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.