Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Následující pokyny jsou určené k [DllImport] použití a je třeba je dodržovat ručně pro správné výsledky. Uživatelé .NET 7 a novější by měli zvážit použití [LibraryImport] . Vestavěný analyzátor Roslyn (povolený ve výchozím nastavení) poskytne požadované pokyny pro [LibraryImport] atribut ve vašem kódu.
Způsob, jakým char jsou hodnoty, string objekty a System.Text.StringBuilder objekty zařazovány, závisí na hodnotě CharSet pole na P/Invoke nebo struktuře. P/Invoke můžete nastavit CharSet nastavením DllImportAttribute.CharSet pole při deklarování P/Invoke. Chcete-li nastavit CharSet pro typ, nastavte pole StructLayoutAttribute.CharSet ve své deklaraci třídy nebo struktury. Pokud tato pole atributů nejsou nastavena, je na kompilátoru jazyka, který určí, který CharSet použít. Jazyk C#, Visual Basic a F# ve výchozím nastavení používají None znakovou sadu, která má stejné chování jako Ansi znaková sada.
Pokud je použit System.Runtime.InteropServices.DefaultCharSetAttribute v modulu v kódu jazyka C# nebo Visual Basic, kompilátor jazyka C# nebo Visual Basic vygeneruje ve výchozím nastavení poskytnuté CharSet místo použití CharSet.None. Jazyk F# nepodporuje DefaultCharSetAttribute, a CharSet.None je ve výchozím nastavení vždy generován.
Následující tabulka ukazuje mapování mezi jednotlivými znakovými sadami a způsob, jakým je znak nebo řetězec reprezentován při zařazování pomocí této znakové sady:
CharSet hodnota |
Windows | .NET Core 2.2 a starší v unixu | .NET Core 3.0 a novější a Mono v unixu |
|---|---|---|---|
Ansi |
char(výchozí znaková stránka systému 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) |
Při výběru znakové sady se ujistěte, že víte, jakou reprezentaci vaše nativní reprezentace očekává.