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.
Kod zawiera pętlę For...Next , w której kompilator nie może wywnioskować typu danych dla zmiennej sterującej pętli, ponieważ spełnione są następujące warunki:
Typ danych zmiennej sterującej pętli nie jest określony za pomocą klauzuli
As.Ograniczenia pętli i zmienna kroku zawierają co najmniej dwa typy danych.
Istnieje więcej niż jedna możliwa konwersja między typami danych.
Nie ma najlepszego typu wśród kandydatów, więc wybór typu dla zmiennej sterującej pętli jest niejednoznaczny.
Na przykład następująca pętla ma jedną pętlę związaną z typem Integer i jedną granicą pętli typu UInteger:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Istnieje możliwa konwersja między i UInteger, a możliwa konwersja między Integer UInteger i Integer, ale obie są konwersje zawężające, więc żaden z nich nie jest najlepszym wyborem.
W następnym przykładzie zostanie dodana trzecia zmienna typu Double . Zarówno, Integer jak i UInteger mają standardowe konwersje rozszerzające na Double, co sprawia, że konwersja na Double najlepszy wybór. Wnioskowanie typu przypisuje do zmiennej sterującej pętli typ i Doubledanych .
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
Identyfikator błędu: BC30983
Aby poprawić ten błąd
Jawnie przekonwertuj jedną ze zmiennych na typ, do którego inne mają konwersję rozszerzającą, na przykład:
For i = m To CLng(n)AsUżyj klauzuli , aby określić typ zmiennej sterującej:For i As Double = m To n