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