Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una Const instrucción no inicializa correctamente una constante, una declaración de matriz usa una variable para especificar el número de elementos o está intentando inicializar una matriz como valor predeterminado para un parámetro opcional.
Identificador de error: BC30059
Para corregir este error
Si la declaración es una
Constinstrucción , compruebe para asegurarse de que la constante se inicializa con un literal, una constante declarada previamente, un miembro de enumeración o una combinación de literales, constantes y miembros de enumeración combinados con operadores.Si la declaración especifica una matriz, compruebe si se usa una variable para especificar el número de elementos. Si es así, reemplace la variable por una expresión constante.
Si intenta inicializar una matriz como valor predeterminado para un parámetro opcional, use uno de los enfoques alternativos descritos en la sección Inicialización de matriz en parámetros opcionales .
Si las comprobaciones anteriores no solucionan el problema, pruebe a establecer en
Constun valor temporal diferente, ejecute el programa y, a continuación, restablezca elConstvalor deseado.
Inicialización de matriz en parámetros opcionales
No se puede inicializar una matriz como valor predeterminado para un parámetro opcional porque la inicialización de matriz no es una expresión constante. El código siguiente genera BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Solución 1: Usar ParamArray en lugar de Opcional
Si necesita aceptar un número variable de argumentos, considere la posibilidad de usar ParamArray en lugar de un 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"))
Solución 2: Usar Nothing como valor predeterminado e inicializar en el cuerpo del método
Establezca el valor Nothing predeterminado en y compruébalo en el 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")})
Solución 3: Proporcionar una sobrecarga sin el parámetro
Cree una versión sobrecargada del método que no requiera el 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