Syn*_*max 7 c# interop dynamic
好的,我正在调用一个我无法访问的互操作DLL.这是伪代码:
dynamic myVariable = null;
firstInteropMethod(ref myVariable);
secondInteropMethod(myVariable); //Not by ref
Run Code Online (Sandbox Code Playgroud)
两种方法的方法签名是
firstInteropMethod(ref object someObject);
secondInteropMethod(object someObject);
Run Code Online (Sandbox Code Playgroud)
期望值是定义的双数组
double[,]
Run Code Online (Sandbox Code Playgroud)
现在有趣的部分.我的原始代码获得了错误的结果,但没有错误.但是,这段代码:
firstInteropMethod(ref myVariable);
secondInteropMethod((double[,]) myVariable);
Run Code Online (Sandbox Code Playgroud)
给出预期的结果.
使用手表和语句类型我已经确定两个调用之间没有任何变化,那么给出了什么?为什么会有差异,这会有什么区别?
这篇有关动态的MSDN文章解释了为什么在操作将参数类型声明为as时,需要对COM Interop进行强制转换,object并指出使用/link:filelist编译器选项将使您也可以将COM方法签名定义为动态的。
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |