如何将可空类型传递给P/调用函数我想知道如何使用/传递可空类型作为参数之一。使用int类型不是问题,但给出以下内容:[DllImport("setupapi.dll",CharSet=CharSet.Auto,SetLastError=true)]staticexternIntPtrSetupDiGetClassDevs(refGuidClassGuid,int?enumerator,IntPtrhwndParent,单位标志);我希望能够将Guid参数作为可空类型传递。目前我可以称之为:SetupDiGetClassDevs(reftGuid,null,IntPtr.Zero,(uint)SetupDiFlags.DIGCF_PRESENT);但是我也需要将第一个参数作为null传递。将Nullable类型传递给PInvoke函数是不可能的,如果没有一些......本机代码中有趣的字节操作,这几乎肯定不是你想要的。如果您需要能够将结构值作为NULL传递给本机代码,则声明PInvoke语句的重载,该语句用结构替换IntPtr并传递IntPtr.Zero[DllImport("setupapi.dll",CharSet=CharSet.Auto,SetLastError=true)]staticexternIntPtrSetupDiGetClassDevs(refGuidClassGuid,refintenumerator,IntPtrhwndParent,uintFlags);[DllImport("setupapi.dll",CharSet=CharSet.Auto,SetLastError=true)]staticexternIntPtrSetupDiGetClassDevs(refGuidClassGuid,IntPtrenumerator,IntPtrhwndParent,uintFlags);注意:我在第一个签名中添加了一个ref类。如果本机签名可以为NULL,则可能是指针类型。因此,您必须通过引用传递值类型。现在您可以拨打以下号码。以上就是C#学习教程:HowtopassthenullabletypetotheP/calledfunction。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——}else{SetupDiGetClassDevs(someGuid,IntPtr.Zero,hwnd,flags);}本文收集自网络,不代表立场,如有侵权请点右联系管理员删除。如需转载请注明出处:
