Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma Const instrução não inicializa corretamente uma constante, uma declaração de matriz usa uma variável para especificar o número de elementos ou você está tentando inicializar uma matriz como o valor padrão para um parâmetro opcional.
ID de erro: BC30059
Para corrigir este erro
Se a declaração for uma
Constinstrução, verifique se a constante é inicializada com um literal, uma constante declarada anteriormente, um membro de enumeração ou uma combinação de literais, constantes e membros de enumeração combinados com operadores.Se a declaração especificar uma matriz, verifique se uma variável está sendo usada para especificar o número de elementos. Em caso afirmativo, substitua a variável por uma expressão constante.
Se você estiver tentando inicializar uma matriz como o valor padrão para um parâmetro opcional, use uma das abordagens alternativas descritas na seção Inicialização da matriz em parâmetros opcionais .
Se as verificações anteriores não resolverem o problema, tente definir o
Constpara um valor temporário diferente, executar o programa e, em seguida, redefinir oConstpara o valor desejado.
Inicialização de array em parâmetros opcionais
Não é possível inicializar uma matriz como o valor padrão para um parâmetro opcional porque a inicialização da matriz não é uma expressão constante. O código a seguir gera BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Solução 1: Use ParamArray em vez de Opcional
Se você precisar aceitar um número variável de argumentos, considere usar ParamArray em vez de um parâmetro opcional:
Public Function MyFun(ParamArray filters() As (String, String)) As Boolean
' The ParamArray automatically provides an empty array if no arguments are passed
For Each filter In filters
' Process each filter
Next
Return True
End Function
' Can be called with any number of arguments:
MyFun() ' Empty array
MyFun(("name", "value"))
MyFun(("name1", "value1"), ("name2", "value2"))
Solução 2: Use Nothing como padrão e inicialize no corpo do método
Defina o valor padrão e Nothing verifique-o em seu método:
Public Function MyFun(Optional filters() As (String, String) = Nothing) As Boolean
If filters Is Nothing Then
filters = New (String, String)() {}
End If
' Process the filters array
For Each filter In filters
' Process each filter
Next
Return True
End Function
' Can be called without arguments:
MyFun() ' Uses empty array
' Or with an array:
MyFun({("name", "value")})
Solução 3: Fornecer uma sobrecarga sem o parâmetro
Crie uma versão sobrecarregada do método que não requer o parâmetro:
' Overload without the parameter
Public Function MyFun() As Boolean
Return MyFun(New (String, String)() {})
End Function
' Main method with required parameter
Public Function MyFun(filters() As (String, String)) As Boolean
' Process the filters array
For Each filter In filters
' Process each filter
Next
Return True
End Function