如何在 VB.net for 循环中为无符号整数索引指定负步长

How do you specify a negative step for an unsigned integer index in a VB.net for-loop

如何在 VB.net

中的 for 循环的无符号整数索引上指定负步长

以下代码将无法编译:

Option Strict

For i as uLong = uLong.maxvalue To 0 Step -1UL
  ...
next i

给出这个: 错误:BC30439 常量表达式无法在 'ULong'

类型中表示

无符号 Int16/Int32/Int64 不能表示为负值,没有办法做到这一点,参见 ULong.MinValue.

这里有两个选择:

    1. 使用while/until循环模拟负步:

      Dim i As ULong = ULong.MaxValue
      
      While (i <> ULong.MinValue)
          Console.WriteLine(i)
          i -= 1UL ' Decrement current value by desired amount.
      End While
      
    1. 设置/removeintchecksvb的编译器参数,然后可以对无符号数据类型使用负值。

      请注意,您可以通过解决方案的配置页面以引导方式设置此参数,在“高级编译选项”中,勾选“删除整数溢出检查".

或者你可以试试这个..

Dim a As Integer = -1
For i As ULong = ULong.MaxValue To 0 Step CULng(a)

Next i