Вычитание из UInt в VB.Net - PullRequest
       25

Вычитание из UInt в VB.Net

1 голос
/ 07 января 2012

У меня есть функция, которая должна принимать UInt в качестве параметра.I'm using the .Net Micro Framework

В качестве простого примера я хотел бы сделать что-то вроде:

        Dim x As UInteger
        For x = 0 To 100
            Port.SetDutyCycle(x)
            Thread.Sleep(10)
        Next
        For x = 100 To 0 Step -1
            Port.SetDutyCycle(x)
            Thread.Sleep(10)
        Next

Второй For не скомпилируется, так как -1 не может быть представленкак UInt.Итак, затем я попытался ...

        For y As UInteger = 0 To 100
            Port.SetDutyCycle(100 - y)
            Thread.Sleep(10)
        Next

Это не скомпилируется, поскольку - y вызывает преобразование в Long, которое затем не может быть сужено до UInt.Следующая попытка:

            Port.SetDutyCycle(DirectCast(100 - y, UInteger))

100 - y не скомпилируется, поскольку «Значение типа« Integer »не может быть преобразовано в« UInteger »»

Итак ... Как я могу легкополучить UInteger, который уменьшается от 100 до 0 в цикле?

Согласно ответу Ханса Пассанта, второй блок кода отлично работает в vanilla .Net

1 Ответ

1 голос
/ 07 января 2012

Вы просто забыли объявить y.Исправление:

    For y As UInteger = 0 To 100
        Port.SetDutyCycle(100 - y)
        Thread.Sleep(10)
    Next

Предупреждение генерируется из-за нестандартных настроек компиляции.Проект + Свойства, вкладка «Компиляция», раздел «Настройка предупреждений».Обычная настройка для опции «Неявное преобразование» - «Нет».Оставьте значение «Предупреждение» нормально, вам просто нужно сделать преобразование явным:

        Port.SetDutyCycle(CUInt(100 - y))
...