如果Marshal.GetLastWin32Error暴露了Kernel32.DLL中的Win32 GetLastError函数,那么为什么它返回一个int,而GetLastError返回一个无符号的DWORD呢?
由于无符号整数不符合CLS兼容。在早期,VB.NET和J#不能处理它们,这是四种支持的语言中的两种。现在已经修复了这个问题,但仍然有许多可以运行在CLR上但不支持无符号整数的语言,Java是最著名的例子。