C#で次のようなことをしたいです。
public void Test()
{
var obj = new TestObject();
var result = TestObject.MethodA(); // 値型の変数を受けとる
TestObject.MethodB(); // 【!】resultの値が変更される
// この行に来たとき、resultにMethodBの"結果"が入っている
}
よろしくお願いします。
(1)
var result = YiledTo(CoroutineB()); // プロセッサに暗黙的にコルーチンを返す
yield return;
// この行に来たときコルーチンBは終了しており、resultにBの結果が入っている
// 追記:質問内容は、このときresultが値型だと、プロセッサはコルーチンAのローカル変数resultに値を返せないか、ということでした。
(2)
var resultBox = YieldTo(CoroutineB()); // resultBoxはclass(参照型)
yield return resultBox; // コルーチンをラップしたものを明示的にプロセッサに返す
var result = resultBox.Result; // コルーチンBの結果を取り出す
IEnmerable<SomeClassB> CoroutineB()
{
...
yield return; // nフレームのウェイトなどの処理を挟める
...
yield return someClassInstance; // プロセッサに最終結果を返す(プロセッサが呼び出し元に渡す)
yield break;
}
IEnunerable<SomeClassA> CoroutineA
{
...
yield return; // nフレームのウェイトなどの処理を挟める
...
var result = YieldTo(CoroutineB()); // YieldToは暗黙的にプロセッサにコルーチンを渡します
yield return; // プロセッサに制御を返す(→コルーチンBが実行され結果が返される)
...
}