通过ref将字符串传递给C#中的activex组件
本文关键字:中的 activex 组件 ref 字符串 通过 | 更新日期: 2023-09-27 18:01:55
我正在尝试使用C#中的模式function(ref string returnvalue)
为我们提供一个ActiveX API函数。API函数修改字符串。
string returnValue = String.Empty;
api.func(ref returnValue); // DISP_E_TYPEMISMATCH
好吧,也许这是因为字符串是不可变的。根据以下内容尝试StringBuilder
:
StringBuilder returnValue = new StringBuilder(128);
api.func(returnValue);
这会导致关于类型不匹配的编译时错误。
如何调用此函数?
我不知道是否需要将C#字符串封送到BStr,如果需要,我不知道如何通过ref将其传递给API函数。
如果func
应该更改returnValue
,我认为您的代码应该这样更改:
string returnValue = String.Empty;
api.func(ref returnValue);
您应该在通过引用传递returnValue
之前初始化它。
UPD:你试过这样称呼它吗?:
api.func(ref Marshal.StringToBSTR(string value));
使用对string
变量的引用来调用它,正如它所说:
string returnValue = "";
api.func(ref returnValue);
您可能想看看C#中的ref和out关键字。