Скопировать структуру в массив байт
От: Аноним  
Дата: 26.01.12 22:36
Оценка:
Доброй ночи коллеги!
Тема конечно не нова и обсуждалась уже не раз, например: http://rsdn.ru/forum/dotnet/3200048.1.aspx
Автор: ajanov
Дата: 04.12.08

но! Все представленные решения грешат тем, что что-то создают, т.е. явно или неявно выделяют память. Встречаются new IntPtr(), GCHandle.Alloc() и другие.
Встроенные решения .NET тоже не дают желаемого. Мне нужно отправить по сети 100 интов и нет времени выделять 100 массивов по 4 байта, как это делает наприер BitConverter. Хочется получить какое то решение, которое бы не требовало создания объектов, структур, выделения дополнительной памяти и было бы универсальным для структур, а не только для интов. Как быть?
Re: Скопировать структуру в массив байт
От: adontz Грузия http://adontz.wordpress.com/
Дата: 26.01.12 22:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А почему бы вам не использовать unsafe указатели?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Скопировать структуру в массив байт
От: Аноним  
Дата: 27.01.12 00:10
Оценка:
Здравствуйте, adontz, Вы писали:

A>А почему бы вам не использовать unsafe указатели?


Если я правильно понял, сборщик мусора может взять мой массив и переместить его в другое место прямо посреди операции записи туда. И тогда часть данных попадёт куда надо, а другая — куда не надо. Пока писал этот ответ, нашел решение: fixed. Спасибо за подсказку!
Re[2]: Скопировать структуру в массив байт
От: Аноним  
Дата: 27.01.12 00:39
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


A>А почему бы вам не использовать unsafe указатели?


А можно ли их использовать с дженериками?
where T : struct
не спасает
Re[3]: Скопировать структуру в массив байт
От: adontz Грузия http://adontz.wordpress.com/
Дата: 27.01.12 00:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А можно ли их использовать с дженериками?
where T : struct
не спасает


Можно попробовать завести обычный (не дженерик) базовый класс. Хотя как оно в памяти разложится фиг его знает.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Скопировать структуру в массив байт
От: hardcase Пират http://nemerle.org
Дата: 27.01.12 09:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А можно ли их использовать с дженериками?
where T : struct
не спасает


Нет. Но требуемые перегрузки можно сгенерировать с помощью T4.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.