В чём заключается разница между ключевым словом out и атрибутом Out? На сколько мне известно из документации, эти вещи эквивалентны.
Но как же тогда объясняется следующая проблема: при импорте WinAPI функции некоторый из её параметров оказывается ссылочным; при указании атрибута Out вызов функции приводит к ошибке 87 (неверный параметр), но если использовать ключевое слово out, такой проблемы не возникает?
Ключевое слово out при компиляции преобразуется в комбинацию атрибута [Out] и ссылочного типа (того самого, который обозначается ключевым словом ref).
Очевидно, вы забыли про ref - отсюда и ошибка.
Нашел вот это(Далее вольный перевод):
[In] и [Out] используются, что бы разрешить двусмысленность при работе с указателями.
[In] всегда ставится неявно по умолчанию=> явно его можно не указывать.
Однако, если ты хочешь получить какие-то изменения на вызывающей стороне, то должен указать атрибут [Out] явно.
Иногда, что бы увидеть изменения в переменной не нужно указывать [Out], например если тип является bittable.
Большинство типов данных имеют общее представления и для managed, и для unmanaged памяти, и не требуют специальной обработки. Эти типы называют blittable, потому что они не требуют специальной обработки при передачи между managed и unmanaged кодом. Другие типы, которые требуют специальных преобразований, называются non-blittable. Вы можете думать, что большинство простых типов являются blittable, и все составные типы являются non-blittable.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости