Чтобы уточнить, что я делаю это в Unity3D, что может быть важно, а может и нет?
Я пытаюсь выяснить, могу ли я передать значение по ссылке функции IEnumerator, которая не дает результата. Если я попытаюсь сделать это с помощью функции yield, VS2010 жалуется («Итераторы не могут иметь параметры ref или out»), но если я оберну вызов аналогичной функцией IEnumerator, которая вызывает функцию yield, но не возвращает себя, ошибка исчезает, и все похоже работает. Я пытаюсь выяснить, нахожусь ли я в стране неожиданного поведения или это нормальное поведение.
Вот пример того, что я делаю:
IEnumerator Wrapper(ref int value)
{
int tmp = ++value; // This is the ONLY place I want the value
return Foo(tmp); // of the ref parameter to change!
} // I do _NOT_ want the value of the ref
// parameter to change in Foo()!
IENumerator Foo(int value)
{
// blah blah
someFunc(value);
someSlowFunc();
yield return null;
yield return null;
}
value
изменится после первоначального приращения. - person zneak   schedule 01.08.2012