【发布时间】:2011-01-02 10:38:45
【问题描述】:
在我的代码中,我通过 COM 接口实例化了旧版 Delphi 对象。 此类需要多次实例化,因此为了降低实例化的开销,我将其缓存在所有调用的 70% 具有公共结果对象的位置。
但是,当我在缓存后更改对象时,更改也会保留在缓存中。这让我觉得 COM 包装器实例是通过 ref 而不是按值传递的。
如何确保缓存中的对象是按值传递而不是按引用传递?
【问题讨论】:
-
当您写下您更改“对象”时,您指的是 Delphi COM 对象还是您的 RCW .NET 端包装代理?当然,COM 对象总是通过引用传递,因此如果您缓存它,则应该共享对其状态的更改......也许一个简短的例子可以澄清您的问题。
-
之后的更改是在代理类上完成的。我将尝试添加一个示例,但与往常一样,带有遗留对象的代码非常混乱。
标签: c# com pass-by-reference pass-by-value