次のコードでは、非常に敏感なオブジェクトが作成され、できるだけ後で実行するほうが良い方法を示しています。Cでの実行を遅らせる方法
public MyObject MyExecution(P1 p1, P2 p2, P3 p3, P4 p4)
{
return new MyObject(p1,p2,p3,p4);
]
public LongTimeAfter(Invokable<MyObject> invk)
{
MyObject obj = invk.Invoke();
}
public void main(P1 p1, P2 p2, P3 p3, P4 p4)
{
Invokable<MyObject> invk = new Invokable<MyObject>(new Func<MyObject,P1,P2,P3,P4>(MyExecution), p1, p2, p3, p4);
LongTimeAfter(invk);
}
class Invokable<T>
{
private Func<T,P1,P2,P3,P4> _f;
private P1 _p1;
private P2 _p2;
private P3 _p3
private P4 _p4;
public Invokable<T>(Func<T,P1,P2,P3,P4> f, P1 p1, P2 p2, P3 p3, P4 p4)
{
_f = f;
_p1 = p1;
_p2 = p2;
_p3 = p3;
_p4 = p4;
}
public T Invoke()
{
return _f(_p1, _p2, _p3, _p4);
}
}
変数が宣言されていない機能プログラミングでは、それが可能であることはわかっています。
これはC#で可能ですか?どうしたらいいのか、どうしたらいいの?
は、いくつかの方法で、この非同期のですか?それ以外の場合は、操作が完了するまでコードは続行されません。私はここで解決されている問題が何であるかはわかりません。 – David
なぜ後でですか?なぜ今じゃないの?それ以外の場合は、作業を並列スレッドに移してください。しかし、人為的に実行を遅らせる理由はありません。 – Abion47
'Lazy'を使用して、必要なときにのみコードを実行できます。https://msdn.microsoft.com/en-us/library/dd642331(v=vs.110).aspx –
BrunoLM