为什么为UInteger分配0xFFFFFFFF会在VB.NET中生成错误?

RHa*_*uda 22 .net vb.net types

UInteger数据类型包含0到4,294,967,295之间的任何值(参考MSDN).

如果我在VB.NET中尝试此代码,我会收到编译器错误:

Dim Test As UInteger = &HFFFFFFFF
Run Code Online (Sandbox Code Playgroud)

错误:"常量表达式在'UInteger'类型中无法表示.

如果此类型可以保存此值,为什么我不能将0xFFFFFFFF(4,294,967,295)设置为UInteger?

Dan*_*Tao 28

我相信这是因为&HFFFFFFFFVB.NET编译器将文字解释为a Integer,而Integera的值是负数(-1),显然不能转换为a UInteger.

这个问题很容易通过编写来修复&HFFFFFFFFUI,附加UI后缀来将文字视为一个UInteger.


Dar*_*rov 8

您可以使用MaxValue常量:

Dim Test As UInteger = UInteger.MaxValue
Run Code Online (Sandbox Code Playgroud)