我有以下功能:
public static extern uint FILES_GetMemoryMapping(
[MarshalAs(UnmanagedType.LPStr)] string pPathFile,
out ushort Size,
[MarshalAs(UnmanagedType.LPStr)] string MapName,
out ushort PacketSize,
ref Mapping oMapping,
out byte PagesPerSector);
我想这样调用它:
FILES_GetMemoryMapping(MapFile, out size, MapName,
out PacketSize, null, out PagePerSector);
不幸的是,我无法在需要类型 ref Mapping
的字段中传递 null
并且我没有尝试过强制转换来修复此问题。
有什么建议吗?
最佳答案
不能传递 null
的原因是 C# 编译器对 ref
参数进行了特殊处理。任何 ref
参数都必须是可以传递给您正在调用的函数的引用。由于您想传递 null
,编译器拒绝允许这样做,因为您没有提供函数期望的引用。
您唯一真正的选择是创建一个局部变量,将其设置为 null
,然后将其传入。编译器不允许您做更多的事情。
关于C#:如何将 null 传递给需要 ref 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736474/