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


<подписьПроцедуры1> несовместима с CLS, поскольку перегружает <подписьПроцедуры2>, отличающуюся только массивом типов параметров или его рангом

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

<proceduresignature1> is not CLS-compliant because it overloads <proceduresignature2> which differs from it only by array of array parameter types or by the rank of the array parameter types

Процедура или свойство помечено как <CLSCompliant(True)>, когда оно переопределяет другую процедуру или свойство, единственное отличие между списками их параметров — вложенный уровень массива массивов или ранг массива.

В следующих объявлениях второе и третье объявления создают эту ошибку.

Overloads Sub processArray(ByVal arrayParam() As Integer)

Overloads Sub processArray(ByVal arrayParam()() As Integer)

Overloads Sub processArray(ByVal arrayParam(,) As Integer)

Второе объявление изменяет исходный одномерный параметр arrayParam на массив массивов. Третье объявление изменяет arrayParam на двумерный массив (ранг 2). Поскольку Visual Basic допускает перегрузки, поддерживающие только одно из этих изменений, такая перегрузка несовместима с Спецификация CLS (CLS).

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

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

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

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

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

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

  • Если требуется, чтобы перегрузки отличались только по признакам, описанным на этой странице справки, удалите CLSCompliantAttribute из их определения или пометьте их как <CLSCompliant(False)>.

См. также

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

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

Перегрузка процедур

Ссылки

Overloads