こんにちは、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は使えないので注意です。

コルーチンについて詳しく解説した記事を書きました。
コルーチンの理解がまだ追いついていない方におすすめです。

オススメ記事
検証環境