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

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

Сообщение Anonymous »

У меня есть функция с следующей подписью < /p>

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

State MoveForward(in Path path);
< /code>
Path< /code> - ref struct < /code>

State
также является Ref struct с простого целого числа.
Теперь у меня есть еще одна вспомогательная функция

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

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
}
< /code>
At the "line A" I am getting the error CS8347: Cannot use a result of 'MoveForward' in this context because it may expose variables referenced by parameter 'path' outside of their declaration scope.
But I think this shouldn't be the case or atleast compiler can be smart enough to avoid throwing this error for few reasons:

[*]State is created just with integers (Compiler can look into the usage of path
). Нет ссылки, обнаруженной из «path»
«Состояние», является структурой рефлексии, которая не несет никакой «ref», чтобы сбежать. Параметр.
Если я удалю в в перемещении Ошибка исчезает. Я хочу сохранить «in» < /p>
Если я разделяю линию, у меня нет никакого способа избежать ошибки. Например: < /p>

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

var result = MoveForward(path); // "line A"
state = result;
return !state.IsEnd(); // IsEnd determined by integer != -1
< /code>
Getting CS8352: Cannot use variable 'result' in this context because it may expose referenced variables outside of their declaration scope.
имеет свою собственную память в стеке и результате должна быть в состоянии скопировать в Come аналогично оператору для одной строки.

Подробнее здесь: 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 с «ref struct» и параметром «in»/«ref»
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Polars struct.field(list[str]) возвращает один столбец при работе со списком[Struct]
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Почему struct {u64} быстрее, чем struct {u32, u32}?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

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