Как в C# преобразовать Bytes[] в Bytes*
От: Sam_  
Дата: 13.08.04 02:27
Оценка:
на сколько я понял в блоке unsafe возможны операции с указателями как и в с++, но похоже есть какие-то ньюансы...?
Re: Как в C# преобразовать Bytes[] в Bytes*
От: TK Лес кывт.рф
Дата: 13.08.04 05:32
Оценка:
Здравствуйте, Sam_, Вы писали:

S_>на сколько я понял в блоке unsafe возможны операции с указателями как и в с++, но похоже есть какие-то ньюансы...?


Укзатели бывают разные. Например managed указатели остаются корректными и после перемещения объекта сборщиком мусора.
Преобразовать можно взяв указатель на первый элемент или, как вариант, через GCHandle.AddrOfPinnedObject
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Как в C# преобразовать Bytes[] в Bytes*
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.08.04 10:27
Оценка:
Здравствуйте, Sam_, Вы писали:

S_>на сколько я понял в блоке unsafe возможны операции с указателями как и в с++, но похоже есть какие-то ньюансы...?


Вопрос, зачем? Обычно (и лучше) обходятся без них.


Но если очень хочется:
byte[] array = new byte[]{ 1, 2, 3, 0 };
fixed (byte* ptr1 = array)
{
        byte* ptr2 = ptr1;
        for (; *ptr2 != 0; ptr2++)
                Console.WriteLine("ptr {0:X}; *ptr {1}", (IntPtr)ptr2, *ptr2);
}
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.