Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Следующие указания по [DllImport] использованию должны быть вручную выполнены для получения правильных результатов. Пользователям .NET 7+ следует рассмотреть возможность использования [LibraryImport] вместо этого. Встроенный анализатор Roslyn (включен по умолчанию) предоставит необходимые рекомендации для атрибута [LibraryImport] в коде.
Способ маршалинга значений char, объектов string и объектов System.Text.StringBuilder зависит от значения поля CharSet, связанным как с P/Invoke, так и со структурой. Вы можете задать CharSet для P/Invoke, задав поле DllImportAttribute.CharSet при объявлении P/Invoke. Чтобы установить CharSet для типа, задайте StructLayoutAttribute.CharSet поле в объявлении вашего класса или структуры. Если эти поля атрибута не заданы, компилятор языка определяет, какой CharSet из них следует использовать. C#, Visual Basic и F# используют None набор символов по умолчанию, который ведет себя так же, как Ansi набор символов.
Если применяется System.Runtime.InteropServices.DefaultCharSetAttribute к модулю в коде C# или Visual Basic, компилятор C# или Visual Basic будет выдавать предоставленный CharSet по умолчанию код вместо использования CharSet.None. F# не поддерживает DefaultCharSetAttributeи всегда выдает CharSet.None по умолчанию.
В следующей таблице показано сопоставление между каждым набором знаков и способом представления символа или строки при преобразовании с использованием этого набора.
Значение CharSet |
Виндоус | .NET Core 2.2 и более ранних версий в Unix | .NET Core 3.0 и более поздних версий и Mono в Unix |
|---|---|---|---|
Ansi |
char
(кодовая страница Windows (ANSI) по умолчанию системы) |
char (UTF-8) |
char (UTF-8) |
Unicode |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char16_t (UTF-16) |
Auto |
wchar_t (UTF-16) |
char16_t (UTF-16) |
char (UTF-8) |
Убедитесь, что вы знаете, какое представление ожидается вашей внутренней кодировкой при выборе набора символов.