【发布时间】:2018-03-15 17:09:37
【问题描述】:
假设出于某种奇怪的原因(interop infact)我有这个方法
void DoSomething(out MyStruct myStruct)
{
// Setting the struct members here.
}
我想传递给另一个看起来像这样的方法:
ExecuteAndProcess(Action action)
{
action();
// How can I access the out parameter here?
}
问题是我不知道如何访问out参数;我试图将ExecuteAndProcess的定义更改为
ExecuteAndProcess(Action action, ref MyStruct myStructParam)
{
action();
var member = myStructParam.Property1;
// ...
}
这样我就可以这样称呼它,希望myStructParam 参数能反映myStruct 变量的变化
MyStruct myStruct = default;
ExecuteAndProcess(() => DoSomething(out myStruct), ref myStructParam);
但事实并非如此。
有什么方法可以执行操作并访问ExecuteAndProcess 方法中的out 参数?
很遗憾,我不能让 DoSomething 简单地返回结构而不是将其作为 out 参数传递,因为它的实现是在非托管代码中。
【问题讨论】: