встретил такую конструкцию в кодяре: [In, Out] byte[] array Передается как параметр. Дайте пожалуйста четкое конкретно объяснение, зачем оно нужно, почему именно оно применяется, и где почитать подробнее.
Ни в шилде, ни в рихтере, ни в английских/русских артикула, ни на msdn'e я не нашел такого.
Обычно параметры с такими атрибутами передаются в неуправляемый код, с дополнительным атрибутом [MarshalAs(UnmanagedType.LPArray)]
, на тот случай, когда допустим необходимо получить длину неуправляемого массива первым вызовом (тогда параметр передается как null
), а перед вторым вызовом. вам необходимо выделить буфер достаточной длины, и после этого передать в данный метод, с ссылкой на длину, т.е. то что вы получили при первом вызове с параметром null
.
Таким образом, такой массив будет передан как указатель на указтель, и в случае передачи null
, будет передан nullptr
(он же 0
или IntPtr.Zero
).
Забыл добавить, что переданная ссылка на массив, будет иметь, или не иметь значения после такого вызова.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть два любых контролаОдин главный, второй дочерний
Допустим, есть List<SomeObject>, где SomeObject- это какой-то объект с десятком полей
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Создал объект состоящий из множества частей, как правильно повернуть одну из частей объекта, чтобы она следила за другим объектом, используя...