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