在 Visual Basic 中
Friend Const xxx As UInt64 = 400 * 365 * 24 * 60 * 60 ''// Number of secs in 400 years
这失败并出现错误
constant expression not representable in type integer
问题是 400 * 365 * 24 * 60 * 60 大于 2^32
我会认为通过将常量声明为 UInt64 可以为其分配 64 位值
除了每年略多于 365 天(您需要添加 97 个闰日)之外,每个乘以组成常量的值都是整数文字,因此在您将它们分配给 UInt64 之前,它是全部在整数空间中完成。试试这个:
Friend Const xxx As UInt64 = 400UL * 365UL * 24UL * 60UL * 60UL
在常量末尾放置一个哈希,并将其声明为“双精度”...
我用我的位掩码字段做到了这一点:
Public Const EDIT_TRANSACTION As Double = 1073741824
Public Const EDIT_DWRDELIVERY As Double = 2147483648#
Public Const ENTER_DWRORDER As Double = 4294967296#
Public Const DELETE_DWRORDER As Double = 8589934592#
Public Const DELETE_TRANSACTION As Double = 17179869184#
Public Const DELETE_WATERORDER As Double = 34359738368#
Public Const ENTER_METERREADING As Double = 68719476736#
** 编辑 **
我想我在这方面被标记了,因为这是我为 VB6 编写的旧代码,而不是你所要求的。所以,如果有人阅读这篇文章使用的是 VB6,并且必须将 Bitmask 字段传递给 SQL 之类的东西,那么这对我来说非常有效。
否则,请继续投票否决我的答案。:)