Начинаю учить C# :(
От: 777777w Россия  
Дата: 11.07.16 05:14
Оценка: :)
И никак не найду гибкость, которая была у C/C++. Или ее там нет?

Принимаю из сокета пакет двоичных данных имеющих такую структуру:
struct CDataPacket
    {
    char        DevType;        // тип устройства
    BYTE        InfType;        // тип информации
    BYTE        Length;            // длина
    BYTE        Data[255];        // данные
    };

Сразу же сталкиваюсь с тем, что в C# повторить ее нельзя: здесь массивы всегда ссылочного типа. Покопавшись, все-таки нахожу что массив можно сделать fixed. Правда, из-за него одного весь проект приходится делать unsafe.

Но главная проблема дальше. Данные принимаются в массив байт. В Си я создавал указатель типа CDataPacket, указывал им на начало массива и работал с ним. Здесь указателей нет, данные ссылочного типа создаются сразу со "своими" данными, а как быть если данные уже существуют отдельно? Ведь ситуация очень распространенная, двоичные файлы тоже читаются в массив байт, как их интерпретировать как структуры неких дынных? Дальше при обработке этой структуры тоже придется преобразовывать типы — поле Data в зависимости от типа устройства и типа информации интерпретируется как другие структуры, как здесь быть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.