gpt4 book ai didi

c# - 编码输出参数和 ref 中的数据

转载 作者:行者123 更新时间:2023-11-30 18:22:15 25 4
gpt4 key购买 nike

在 C# 方面我有这样的代码

[DllImport("dppClientModule.dll", CallingConvention = CallingConvention.StdCall)]
private static extern UInt32 dppModuleDeinit(
[In, Out, MarshalAs(UnmanagedType.LPStruct)]
dppErrorInfo_t pErrInfo);

但它被称为像

  dppErrorInfo_t ei = new dppErrorInfo_t();
UInt32 result = dppModuleDeinit(ei);

我的第一个问题是:a ref 不在上面一行吗? ei 缺少关键字?

还有另一个包装函数,如:

private void Test(ref dppErrorInfo_t x)
{
UInt32 result = dppModuleDeinit(x);
}

我的第二个问题是:Test来电者 会吗?观察 x 的变化多变的? (假设 dppModuleDeinit 确实改变了原始变量)

注意:因为通常如果 dppModuleDeinit需要ref参数你还必须把 ref之前 x传递给 dppModuleDeinit 时否则将无法正常工作。

PS 这是该函数在 C++ 上的样子

dppFUNC(HRESULT) dppModuleDeinit( 
dppErrorInfo_t *pErrInfo) ; // Error info

最佳答案

  1. 应该没问题,因为你定义了带参数的多个类型 [In, Out, ref]。

  2. 对于所有 LOB,.NET 在内部将这些参数作为 ref 传递。所以 Test 的调用者必须观察变化。

关于c# - 编码输出参数和 ref 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34217744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com