c# - 将vb6变量转换为C#

我正在将一些旧的VB6代码转换到C#,从远程设备下载保存的数据。

我已经转换了很多代码,但是,有一些常数存在问题。

vb6代码:Private Const GENERIC_WRITE =

C# code:private const int GENERIC_WRITE = 0x40000000 ; private const uint GENERIC_READ = 0x80000000 ;

第二行为什么必须是unit? 如果我改成int,它会给我一个错误?

时间:

Int32的最大值为2,147 ,483 ,647,0x80000000是2,147 ,483 ,648或Int32.MaxValue 1 。

使用uint (或long )类型足够大,可以保存分配的值。

它给出了一个错误,因为该值大于整数的最大允许值2147483647. 0x80000000转换为2147483648

正确的C#是:


const int GENERIC_READ = unchecked((int)0x80000000);



在VB中,'generic_read'是隐式值为负值的整数,在C#中重现唯一的方法是将无符号整数文本转换为int 。

...