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# にあります。