最终编辑
我对“功能”进行了更全面的测试,并撰写了一篇完整的文章:Optional passed by reference parameters with C# for VBA COM APIs
欢迎任何反馈。
无论出于何种原因 C#,方法都不能可选 通过引用传递(标有ref
或{{ 1}})参数。
但在 VBA , VB6 或 COM 等其他基础设施中,这是可能的。
使用COM 使用VBA桥接C#时我找到了一种克服C#限制的方法,将out
参数标记为ref
,这是AFAIK的C#编译器在管道结束时生成。
[Optional]
这似乎很有魅力:当从VBA调用C#时,我可以省略void SomeDotNetCSMethod([Optional] ref someParameter)
参数,当然我可以从.Net / C#端读取和更改它们。
但由于我没有找到任何关于它的文章,我想确定这个“技巧”没有不良副作用。
你知道吗?你能想象吗?修改
使用ref
属性,我可能找到了让VBA看到参数默认值的方法,但仅适用于某些类型。
我会做更多测试以确认这是按预期工作的......