Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'istruzione Const non inizializza correttamente una costante, una dichiarazione di matrice usa una variabile per specificare il numero di elementi oppure si sta tentando di inizializzare una matrice come valore predefinito per un parametro facoltativo.
ID errore: BC30059
Per correggere l'errore
Se la dichiarazione è un'istruzione
Const, verificare che la costante sia inizializzata con un valore letterale, una costante dichiarata in precedenza, un membro di enumerazione o una combinazione di valori letterali, costanti e membri di enumerazione combinati con operatori.Se la dichiarazione specifica una matrice, verificare se viene usata una variabile per specificare il numero di elementi. In tal caso, sostituire la variabile con un'espressione costante.
Se si sta tentando di inizializzare una matrice come valore predefinito per un parametro facoltativo, usare uno degli approcci alternativi descritti nella sezione Inizializzazione della matrice nella sezione Parametri facoltativi .
Se i controlli precedenti non risondono il problema, provare a impostare su
Constun valore temporaneo diverso, eseguire il programma e quindi reimpostare ilConstvalore desiderato.
Inizializzazione della matrice nei parametri facoltativi
Non è possibile inizializzare una matrice come valore predefinito per un parametro facoltativo perché l'inizializzazione della matrice non è un'espressione costante. Il codice seguente genera BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Soluzione 1: Usare ParamArray invece di Facoltativo
Se è necessario accettare un numero variabile di argomenti, è consigliabile usare ParamArray anziché un parametro facoltativo:
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"))
Soluzione 2: Usare Nothing come impostazione predefinita e inizializzare nel corpo del metodo
Impostare il valore predefinito su Nothing e controllarlo nel metodo:
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")})
Soluzione 3: Fornire un overload senza il parametro
Creare una versione di overload del metodo che non richiede il parametro :
' 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