Код: Выделить всё
State MoveForward(in Path path);
Код: Выделить всё
Path
Код: Выделить всё
State
Теперь у меня есть еще одна вспомогательная функция
Код: Выделить всё
bool TryMoveForward(in Path path, ref State state)
{
// which does something like:
state = MoveForward(path); // "line A"
return !state.IsEnd(); // IsEnd determined by integer != -1
}
Но я думаю, что этого не должно быть, или, по крайней мере, компилятор может быть достаточно умен, чтобы избежать выдачи этой ошибки по нескольким причинам:
[*]Государство создается просто с целыми числами (компилятор может проверить использование пути). Из "path" нет ссылок.
[*]"State" — это ссылочная структура, которая не содержит никаких "ref", с помощью которых можно было бы выйти.
Как сделать так, чтобы компилятор не жаловался на это?
Я не понимаю, является ли проблемой присвоение чего-либо состоянию ref State или передать путь в параметре.
Если я удалю в MoveForward, ошибка исчезнет. Я хочу сохранить «внутри»
Если я разделю строку, у меня не будет возможности избежать ошибки. например:
Код: Выделить всё
var result = MoveForward(path); // "line A"
state = result;
return !state.IsEnd(); // IsEnd determined by integer != -1
Код: Выделить всё
state
Подробнее здесь: https://stackoverflow.com/questions/791 ... -parameter