在 C++ 中,我会使用 Type ** var 来执行此操作。这是如何在 C# 中完成的?这是正在发生的事情的一个例子。这是相当粗糙的伪代码......
Class Main{
class DataObj {...};
class Param
{
public DataObj obj;
public CBFunc f;
}
// Start a load, DataObj o should be set once the load is complete
void Load(string fn, DataObj o, CBFunc func)
{
Param p = new Param();
p.obj = o;
p.f = func;
// will call the CBFunc when done...
LoadWithCB(fn, CBFunc, p);
}
void CBFunc(Param p, DataObject o)
{
// DataObj o is what was loaded. p.obj is set to o...
p.obj = o;
p.f();
}
DataObj A;
void Init()
{
Load("...",A, MyCBFunc);
}
void MyCBFunc()
{
//A now is filled out
A.whatever();
}
}
请注意,此代码不起作用,并且 vars 的输入不正确...我只是不知道要完成此操作的类型应该是什么...
所以需要的是有一个DataObj A,调用Init,它加载并在稍后调用函数MyCBFunc。此时应填写A。在 C++ 中,我会传递一个 **var,然后可以取消引用它并正确设置并正确填写变量。
那么有没有办法将 A 传递给 Load,签名上也应该是什么类型以及 Param 中的 DataObj obj 声明允许将其作为引用传递?
这是在托管 C# 中。