gpt4 book ai didi

c# - 动态关键字、C# 和 Interop?

转载 作者:太空狗 更新时间:2023-10-29 20:28:51 26 4
gpt4 key购买 nike

好的,我正在调用一个我无权访问的互操作 dll。这是伪代码:

dynamic myVariable = null;

firstInteropMethod(ref myVariable);
secondInteropMethod(myVariable); //Not by ref

这两个方法的方法签名是

firstInteropMethod(ref object someObject);
secondInteropMethod(object someObject);

期望值是定义的double数组

double[,]

现在是有趣的部分。我的原始代码得到了错误的结果,但没有错误。但是,这段代码:

firstInteropMethod(ref myVariable);
secondInteropMethod((double[,]) myVariable);

给出预期的结果。

使用 watches 和 type of statements 我已经确定这两个调用之间没有任何变化,那么是什么原因呢?为什么会有差异,差异是什么?

最佳答案

This MSDN article on dynamic解释了为什么当操作将参数类型声明为 object 时 COM Interop 需要强制转换,并指出使用 /link:filelist 编译器选项将允许您定义 COM 方法签名也是动态的。

关于c# - 动态关键字、C# 和 Interop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043406/

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