Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Instrukcja Const nie inicjuje poprawnie stałej, deklaracja tablicy używa zmiennej do określenia liczby elementów lub próbujesz zainicjować tablicę jako wartość domyślną opcjonalnego parametru.
Identyfikator błędu: BC30059
Aby naprawić ten błąd
Jeśli deklaracja jest instrukcją
Const, sprawdź, czy stała jest inicjowana za pomocą literału, wcześniej zadeklarowanej stałej, składowej wyliczenia lub kombinacji literałów, stałych i składowych wyliczenia połączonych z operatorami.Jeśli deklaracja określa tablicę, sprawdź, czy zmienna jest używana do określenia liczby elementów. Jeśli tak, zastąp zmienną wyrażeniem stałym.
Jeśli próbujesz zainicjować tablicę jako wartość domyślną dla opcjonalnego parametru, użyj jednej z alternatywnych metod opisanych w sekcji Inicjowanie tablicy w sekcji parametry opcjonalne .
Jeśli powyższe testy nie rozwiążą problemu, spróbuj ustawić
Constinną wartość tymczasową, uruchomić program, a następnie zresetowaćConstwartość do żądanej wartości.
Inicjowanie tablicy w parametrach opcjonalnych
Nie można zainicjować tablicy jako wartości domyślnej opcjonalnego parametru, ponieważ inicjowanie tablicy nie jest wyrażeniem stałym. Poniższy kod generuje BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Rozwiązanie 1. Użyj narzędzia ParamArray zamiast opcjonalnego
Jeśli musisz zaakceptować zmienną liczbę argumentów, rozważ użycie ParamArray zamiast opcjonalnego 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"))
Rozwiązanie 2. Użyj wartości nic jako domyślnej i zainicjuj ją w treści metody
Ustaw wartość domyślną na Nothing i sprawdź ją w metodzie:
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")})
Rozwiązanie 3. Podawanie przeciążenia bez parametru
Utwórz przeciążoną wersję metody, która nie wymaga parametru:
' 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