And*_*aus 18 c# windows registry types
我遇到了一个奇怪的问题:当从我的C#应用程序在Windows注册表中设置DWORD类型的值时,我在设置最高位时不断收到错误.显然,有符号和无符号整数之间似乎存在某种转换问题.
示例:当我做这样的事情时
regKey.SetValue("Value", 0x70000000u, RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)
它工作正常.但是当我添加最高位(由于我专门处理无符号整数,应该只是另一个值位),就像这样
regKey.SetValue("Value", 0xf0000000u, RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)
我得到一个异常("值对象的类型与指定的RegistryValueKind不匹配,或者无法正确转换对象").
但它应该不起作用?DWORD是一个无符号的32位整数数据类型,0xf0000000u文字也是如此(C#自动为其分配UInt32数据类型),因此它们应该是完美的匹配(并且在注册表编辑器中手动将值设置为"0xf0000000"工作正常,太).这是.NET中的错误还是我做错了什么?
Jon*_*eet 27
我的猜测是你需要使用签名int代替.所以只需将其转换为:
regKey.SetValue("Value", unchecked((int) 0xf0000000u),
RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)
我同意这有点奇怪,当你认为DWORD通常是无符号的(IIRC)但它至少值得一试......
| 归档时间: |
|
| 查看次数: |
11677 次 |
| 最近记录: |