У нас есть приложение, в котором нам нужно де-сериализовать некоторые данные из одного потока на несколько объектов.Как пройти через массив в C# через несколько вызовов
Массив данных представляет собой количество сообщений переменной длины, упакованных вместе. В потоке нет разметки кода.
Мы хотим сделать что-то вроде:
void Decode(byte[] Data)
{
Object0.ExtractMessage(Data);
Object1.ExtractMessage(Data);
Object2.ExtractMessage(Data);
...
}
, где каждый вызов ProcessData знает, с чего начать в массиве. В идеале мы бы сделали это, не передав ссылку DataIx
.
Для этого в C++ мы просто передаем указатель в массив, и каждая функция ProcessData будет увеличивать его по мере необходимости.
Каждый класс объектов знает, как его собственные сообщения сериализуются и на которые можно положиться (на C++), чтобы вернуть указатель в начале следующего сообщения в потоке.
Есть ли какой-нибудь встроенный механизм, который мы можем использовать для этого (без перехода unsafe
)? Операция - высокая частота (~ 10 кПа) и очень легкий. Мы также не хотим копировать или обрезать массив.
Благодарим за помощь.
Я знаю, что вы сказали, что не хотите использовать индекс, но как я это делал в прошлом, это перейти в индекс начала и вернуть следующий индекс для продолжения. –
Я могу, и если нет другого пути, я буду, потому что это также то, как мы это делали в прошлом. Просто интересно, есть ли более аккуратный способ? –