CS8347 с «ref struct» и параметром «in»/«ref»C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 CS8347 с «ref struct» и параметром «in»/«ref»

Сообщение Anonymous »

У меня есть функция со следующей сигнатурой

Код: Выделить всё

State MoveForward(in Path path);
— это ссылочная структура
также является ссылочной структурой, содержащей только целое число.
Теперь у меня есть еще одна вспомогательная функция

Код: Выделить всё

bool TryMoveForward(in Path path, ref State state)
{
// which does something like:
var result = MoveForward(path); // "line A"
return !result.IsEnd(); // IsEnd determined by integer != -1
}
В «строке A» я получаю сообщение об ошибке CS8347: невозможно использовать результат «MoveForward» в этом контексте, поскольку он может предоставлять переменные, на которые ссылается параметр «путь», за пределами их объявления. область видимости.
Но я думаю, что этого не должно быть, или, по крайней мере, компилятор может быть достаточно умен, чтобы избежать выдачи этой ошибки по нескольким причинам:

[*]Государство создается просто с целыми числами (компилятор может проверить использование пути). Из "path" нет ссылок.
[*]"State" — это ссылочная структура, которая не содержит никаких "ref", с помощью которых можно было бы выйти.

Как сделать так, чтобы компилятор не жаловался на это?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -parameter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • CS8347/CS8352 с «ref struct» и параметром «in»/«ref»
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • CS8347/CS8352 с «ref struct» и параметром «in»/«ref»
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • CS8347 / CS8352 с параметрами «refr struct» и «in» / «ref»
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Polars struct.field(list[str]) возвращает один столбец при работе со списком[Struct]
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Почему struct {u64} быстрее, чем struct {u32, u32}?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»