Тип возвращаемого значения функции <имяПроцедуры> несовместим с CLS
Обновлен: Ноябрь 2007
Return type of function '<procedurename>' is not CLS-compliant
Процедура Function помечена как <CLSCompliant(True)>, но возвращает тип, который помечен как <CLSCompliant(False)>, не помечен или не квалифицирован, так как он является несовместимым типом.
Для совместимости процедуры с Спецификация CLS (CLS) она должна использовать только CLS-совместимые типы. Это относится к типам параметров, типу возвращаемого значения и типам всех ее локальных переменных.
Следующие типы данных Visual Basic не являются CLS-совместимыми:
При применении CLSCompliantAttribute к элементу программирования параметру isCompliant атрибута присваивается значение True или False, чтобы указать соответствие или несоответствие. Значение по умолчанию для этого параметра отсутствует, поэтому значение необходимо указать.
Если к элементу не применяется атрибут CLSCompliantAttribute, элемент считается несовместимым.
По умолчанию это сообщение является предупреждением. Дополнительные сведения о скрытии предупреждений или обработке предупреждений в качестве ошибок см. в разделе Настройка предупреждений в Visual Basic.
Идентификатор ошибки: BC40027
Для исправления данной ошибки выполните следующее.
Если процедура Function должна возвращать этот конкретный тип, удалите CLSCompliantAttribute. Процедура не может быть CLS-совместимой.
Если процедура Function должна быть CLS-совместимой, то измените тип возвращаемого значения на ближайший CLS-совместимый тип. Например, вместо UInteger можно использовать Integer, если не требуется значение диапазона, превышающее 2 147 483 647. Если необходим расширенный диапазон, можно заменить UInteger на Long.
Если производится взаимодействие с объектами автоматизации или COM-объектами, то имейте в виду, что некоторые типы имеют ширину данных, отличающуюся от ширины данных в .NET Framework. Например, в других средах тип int часто является 16-разрядным. Если возвращается 16-разрядное целое число в такой компонент, объявите его как Short вместо Integer в управляемом коде Visual Basic.