渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ

コルーチンの引数には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でやり取りされている内容を読むと、はは〜ンってなります。 stackoverflow.com

結論

コルーチンにref、outは使えない。