Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Koden innehåller en For...Next
loop där kompilatorn inte kan härleda en datatyp för loopkontrollvariabeln eftersom följande villkor är sanna:
Datatypen för loopkontrollvariabeln har inte angetts med en
As
sats.Loop-gränserna och stegvariabeln innehåller minst två datatyper.
Det finns mer än en möjlig konvertering mellan datatyperna.
Det finns ingen bästa typ bland kandidaterna, så att valet av typ för loopkontrollvariabeln är tvetydigt.
Följande loop har till exempel en loop som är bunden av typen Integer
och en loop som är bunden av typen UInteger
:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Det finns en möjlig konvertering mellan Integer
och UInteger
, och en möjlig konvertering mellan UInteger
och Integer
, men båda begränsar konverteringarna så inget av dem är det bästa valet.
I nästa exempel läggs en tredje variabel av typen Double
till. Både Integer
och UInteger
har standardbreddningskonverteringar till Double
, vilket gör konverteringen till Double
det bästa valet. Typinferens tilldelar till loopkontrollvariabeln i
datatypen Double
.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
Fel-ID: BC30983
Så här åtgärdar du det här felet
Konvertera uttryckligen en av variablerna till en typ som de andra har en bredare konvertering till, till exempel:
For i = m To CLng(n)
Använd en
As
sats för att ange typ av kontrollvariabel:For i As Double = m To n