我正在转换为不提供unchecked
关键字的VB.NET 。但是在此语句中似乎没有必要:
const int dwAccess = unchecked((int)0xC0000000);
我在这里有两个观察结果:
dwAccess
被声明为常量System.Int32
鉴于这些,仅此一项是安全的:
Const dwAccess As Integer = &HC0000000
在这种情况下使用它:
[DllImport("Kernel32", CharSet = CharSet.Auto, SetLastError = true)]
private static extern SafeFileHandle CreateFile(string lpFileName, int dwAccess, int dwShareMode,
IntPtr securityAttrs, int dwCreationDisposition,
int dwFlagsAndAttributes, IntPtr hTemplateFile);
澄清:这个问题与unchecked
关键字在C#中是否必要无关。显然是。关于VB.NET中缺少关键字是否阻止了语句的成功转换。
答案是肯定的。它是多余的,可以删除。
unchecked关键字用于禁止对整数型算术运算和转换进行溢出检查。
更新,此答案应该已经合格。
如果未选中原始VB.NET代码,则等效的C#代码也将以相同的方式发挥作用。两者都将溢出,并且都将给出相同的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句