DWORD应该映射到int还是uint?

Meh*_*dad 31 .net c# pinvoke winapi dword

在将Windows API(包括数据类型)转换为P/Invoke时,我应该用int或替换DWORD uint吗?

它通常是未签名的,但我看到人们int在任何地方使用它(只是因为CLS警告?甚至.NET Framework本身这样做),所以我从来不确定哪一个是正确的使用它.

Chr*_*isF 44

以及根据MSDN DWORD是4294967295的范围为0的无符号整数.

所以理想情况下你应该用uint而不是替换它int.

但是,正如您所发现的那样uint,非CLS兼容,因此如果您的方法是公开可见的,则应使用int并执行转换.这样做的必然结果是,如果你的方法没有在你的程序集之外使用,你应该将它标记为internal而不是public.然后你就可以使用了uint.