Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Příkaz Const neinicializuje konstantu správně, deklarace pole používá proměnnou k určení počtu prvků nebo se pokoušíte inicializovat pole jako výchozí hodnotu volitelného parametru.
ID chyby: BC30059
Oprava této chyby
Pokud je
Constdeklarace příkazem, zkontrolujte, zda je konstanta inicializována literálem, dříve deklarovanou konstantou, členem výčtu nebo kombinací literálů, konstant a členů výčtu v kombinaci s operátory.Pokud deklarace určuje pole, zkontrolujte, jestli se k určení počtu prvků používá proměnná. Pokud ano, nahraďte proměnnou konstantním výrazem.
Pokud se pokoušíte inicializovat pole jako výchozí hodnotu volitelného parametru, použijte jeden z alternativních přístupů popsaných v inicializaci pole v oddílu volitelných parametrů .
Pokud předchozí kontroly problém nevyřeší, zkuste nastavit
Constjinou dočasnou hodnotu, spustit program a potom resetovatConstpožadovanou hodnotu.
Inicializace pole v volitelných parametrech
Pole nelze inicializovat jako výchozí hodnotu volitelného parametru, protože inicializace pole není konstantní výraz. Následující kód vygeneruje BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Řešení 1: Použití paramArray místo volitelného
Pokud potřebujete přijmout proměnný počet argumentů, zvažte použití ParamArray namísto volitelného parametru:
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"))
Řešení 2: Použití funkce Nothing jako výchozí a inicializace v těle metody
Nastavte výchozí hodnotu Nothing a zkontrolujte ji v metodě:
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")})
Řešení 3: Poskytnutí přetížení bez parametru
Vytvořte přetíženou verzi metody, která nevyžaduje parametr:
' 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