Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Const Anweisung initialisiert keine Konstante ordnungsgemäß, eine Arraydeklaration verwendet eine Variable, um die Anzahl der Elemente anzugeben, oder Sie versuchen, ein Array als Standardwert für einen optionalen Parameter zu initialisieren.
Fehler-ID: BC30059
So beheben Sie diesen Fehler
Wenn es sich bei der Deklaration um eine
ConstAnweisung handelt, überprüfen Sie, ob die Konstante mit einem Literal, einer zuvor deklarierten Konstante, einem Enumerationsmember oder einer Kombination aus Literalen, Konstanten und Enumerationsmembern in Kombination mit Operatoren initialisiert wird.Wenn die Deklaration ein Array angibt, überprüfen Sie, ob eine Variable verwendet wird, um die Anzahl der Elemente anzugeben. Ersetzen Sie in diesem Falls die Variable durch einen Konstantenausdruck.
Wenn Sie versuchen, ein Array als Standardwert für einen optionalen Parameter zu initialisieren, verwenden Sie einen der alternativen Ansätze, die im Abschnitt "Arrayinitialisierung" im Abschnitt mit optionalen Parametern beschrieben sind.
Wenn das Problem durch die vorstehenden Prüfungen nicht behoben wird, versuchen Sie, den
ConstWert auf einen anderen temporären Wert festzulegen, führen Sie das Programm aus, und setzen Sie dann denConstgewünschten Wert zurück.
Arrayinitialisierung in optionalen Parametern
Sie können ein Array nicht als Standardwert für einen optionalen Parameter initialisieren, da die Arrayinitialisierung kein konstanter Ausdruck ist. Der folgende Code generiert BC30059:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Lösung 1: Verwenden von ParamArray anstelle von Optional
Wenn Sie eine variable Anzahl von Argumenten akzeptieren müssen, sollten Sie anstelle eines optionalen Parameters folgendes verwenden ParamArray :
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"))
Lösung 2: Verwenden von Nothing als Standard und Initialisieren im Methodentext
Legen Sie den Standardwert fest, Nothing und überprüfen Sie ihn in Ihrer Methode:
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")})
Lösung 3: Bereitstellen einer Überladung ohne den Parameter
Erstellen Sie eine überladene Version der Methode, für die der Parameter nicht erforderlich ist:
' 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