如何在ULong上按位操作设置大常量?

Fre*_*dou 4 vb.net bit-manipulation

这很好用:

Public Const test As ULong = 1 << 30
Run Code Online (Sandbox Code Playgroud)

这不能很好地工作:

Public Const test As ULong = 1 << 31
Run Code Online (Sandbox Code Playgroud)

它会创建此错误:

常量表达式在'ULong'类型中无法表示

我如何使其工作?

这确实有效:

Public Const test As Long = 1 << 31
Run Code Online (Sandbox Code Playgroud)

但我必须使用ULong.

Ree*_*sey 5

您不能1 << 31使用Long数据类型进行切换,因此会出现此错误.

但是,这是因为1,作为整数文字,被视为Int32,这是默认的整数文字.

您应该通过将其定义为:

Public Const test As ULong = 1UL << 30
Public Const test2 As ULong = 1UL << 31
Run Code Online (Sandbox Code Playgroud)

UL标志表示使1为无符号长整数. 详情请参阅类型字符.