如何将实际对象传递给采用对象引用的方法

How to pass an actual object to method that takes an object reference

在 C++/CLI 代码块中,我有这样的代码:

{
    System::IO::StreamWriter sw("file");
    sw.WriteLine("Hello, world!");
}

想法是 sw.Dispose() 在块的末尾被自动调用,不管它是如何到达那里的——无论是正常还是通过抛出异常。

现在,我想将 sw 传递给在 C# 中定义为 void foo(StreamWriter) 的方法。这意味着我不能简单地调用

foo(sw);

因为 foo 需要一个 StreamWriter^ 而我传递给它一个 StreamWriter。如何传递对 sw 的引用?

您需要使用 % 运算符!参见 Tracking References in the MSDN

{
 System::IO::StreamWriter sw("file");
 sw.WriteLine("Hello, world!");
 foo(%sw); 
}