Partilhar via


Tipo de valor opcional para parâmetro opcional <nomedoparâmetro> não é compatível com CLS

Um procedimento está marcado como <CLSCompliant(True)> mas declara um parâmetro Opcional (Visual Basic) com valor padrão de um tipo incompatível.

Para um procedimento para ser compatível com o CLS (Common Language Specification) (CLS), ele deve usar somente tipos compatíveis com CLS.Isso se aplica aos tipos de parâmetros, o tipo de retorno e os tipos de todas as suas variáveis locais.Também se aplica aos valores padrão dos parâmetros opcionais.

Os seguintes tipos de dados Visual Basic não são compatíveis com CLS:

Quando você aplica o atributo CLSCompliantAttribute a um elemento de programação, você define o parâmetro isCompliant do atributo para True ou False para indicar compatibilidade ou incompatibilidade.Não há padrão para este parâmetro, e você deve fornecer um valor.

Se você não aplicar CLSCompliantAttribute a um elemento, ele vai ser considerado incompatível.

Por padrão, essa é uma mensagem de aviso.Para informações sobre como ocultar avisos ou tratar avisos como erros, consulte Configurando Avisos (Warnings) no Visual Basic.

ID de erro: BC40042

Para corrigir este erro

  • Se o parâmetro opcional deve ter um valor padrão desse tipo específico, remova CLSCompliantAttribute.O procedimento não pode ser compatível com CLS.

  • Se o procedimento deve ser compatível com CLS, altere o tipo deste valor padrão para o tipo compatível com CLS mais próximo.Por exemplo, no lugar de UInteger Você poderá usar Integer Se você não precisa o intervalo de valores acima de 2.147.483.647. Se você precisar de intervalo estendido, você pode substituir UInteger com Long.

  • Se você estiver interfaceando com objetos de automação ou COM, tenha em mente que alguns tipos têm larguras de dados diferentes do que em .NET Framework.Por exemplo, int é geralmente 16 bits em outros ambientes.Se você estiver retornando um inteiro de 16 bits para tal componente, declare-o como Short em vez de Integer no seu código gerenciado Visual Basic.

Consulte também

Conceitos

Escrevendo código compatível com CLS