こんにちは、Unityエンジニアのオオバです。
タイトルの通り、コルーチンの引数にref、outを使ってハマったので共有です。
コルーチンで少しハマったので共有です。
コルーチンに「ref」「out」は使えない
次のダメなサンプルを見てみましょう。
IEnumerator Hoge (ref int foo)
{
yield return null;
foo = 1;
}
このようにIEnumeratorを返す関数にはrefやoutが使えず、以下のようなエラーが出力されます。
error CS1623: Iterators cannot have ref, in or out parameters
C#の仕様としてイテレータにはref、outを使用することはできないようです。
こちらのStackOverflowでやり取りされている内容を読むと理解できるかもしれません。
c# - Why can't iterator methods take either 'ref' or 'out' parameters? - Stack Overflow
まとめ
コルーチンにref、outは使えないので注意です。
コルーチンについて詳しく解説した記事を書きました。
コルーチンの理解がまだ追いついていない方におすすめです。

この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity2018.3.7f1