Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een Const instructie initialiseert een constante niet goed, een matrixdeclaratie maakt gebruik van een variabele om het aantal elementen op te geven of u probeert een matrix te initialiseren als de standaardwaarde voor een optionele parameter.
Fout-id: BC30059
Deze fout corrigeren
Als de declaratie een
Constinstructie is, controleert u of de constante wordt geïnitialiseerd met een letterlijke waarde, een eerder gedeclareerde constante, een opsommingslid of een combinatie van letterlijke, constanten en opsommingsleden in combinatie met operators.Als in de declaratie een matrix wordt opgegeven, controleert u of een variabele wordt gebruikt om het aantal elementen op te geven. Vervang de variabele zo ja, door een constante expressie.
Als u een matrix wilt initialiseren als de standaardwaarde voor een optionele parameter, gebruikt u een van de alternatieve methoden die worden beschreven in de initialisatie van de matrix in de sectie optionele parameters .
Als de voorgaande controles het probleem niet verhelpen, kunt u proberen de
Constwaarde in te stellen op een andere tijdelijke waarde, het programma uit te voeren en vervolgens deConstgewenste waarde opnieuw in te stellen.
Initialisatie van matrix in optionele parameters
U kunt een matrix niet initialiseren als de standaardwaarde voor een optionele parameter, omdat de initialisatie van de matrix geen constante expressie is. Met de volgende code wordt BC30059 gegenereerd:
' This causes BC30059
Public Function MyFun(Optional filters() As (String, String) = New (String, String)() {}) As Boolean
' Function body
End Function
Oplossing 1: ParamArray gebruiken in plaats van Optioneel
Als u een variabel aantal argumenten wilt accepteren, kunt u overwegen in plaats van een optionele parameter te gebruiken 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"))
Oplossing 2: Niets als standaard gebruiken en initialiseren in de hoofdtekst van de methode
Stel de standaardwaarde Nothing in en controleer deze in uw 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")})
Oplossing 3: Een overbelasting zonder de parameter opgeven
Maak een overbelaste versie van de methode waarvoor de parameter niet is vereist:
' 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