Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die folgenden Hinweise sind für die Verwendung von [DllImport] und müssen für korrekte Ergebnisse manuell befolgt werden. .NET 7+-Benutzer sollten die Verwendung von [LibraryImport] stattdessen in Betracht ziehen. Ein vordefinierter Roslyn-Analyzer (standardmäßig aktiviert) enthält erforderliche Anleitungen für das [LibraryImport]-Attribut in Ihrem Code.
Die Art und Weise, wie char-Werte, string-Objekte und System.Text.StringBuilder-Objekte gemarshallt werden, hängt vom Wert im Feld CharSet in P/Invoke oder der Struktur ab. Sie können den CharSet von P/Invoke festlegen, indem Sie beim Deklarieren von P/Invoke das Feld DllImportAttribute.CharSet bestimmen. Um den CharSet Typ festzulegen, legen Sie das StructLayoutAttribute.CharSet Feld für die Klasse oder Strukturdeklaration fest. Wenn diese Attributfelder nicht festgelegt sind, muss der Sprachcompiler bestimmen, welcher CharSet verwendet werden soll. C#, Visual Basic und F# verwenden standardmäßig das None Zeichenset, das das gleiche Verhalten wie das Ansi Zeichenset aufweist.
Wenn System.Runtime.InteropServices.DefaultCharSetAttribute im C#- oder Visual Basic-Code auf das Modul angewendet wird, emittiert der C#- oder Visual Basic-Compiler standardmäßig den bereitgestellten CharSet, anstatt CharSet.None zu verwenden. F# unterstützt nicht das DefaultCharSetAttribute, und gibt immer standardmäßig aus CharSet.None .
Die folgende Tabelle zeigt eine Zuordnung zwischen den einzelnen Zeichensätzen und wie ein Zeichen oder eine Zeichenkette dargestellt wird, wenn sie mit diesem Zeichensatz gemarshallt wird:
CharSet-Wert |
Fenster | .NET Core 2.2 und früher auf Unix | .NET Core 3.0 und höher und Mono unter Unix |
|---|---|---|---|
Ansi |
char(die systemstandardmäßige Windows (ANSI) Codepage |
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) |
Stellen Sie sicher, dass Sie wissen, welche Darstellung Ihre native Darstellung erwartet, wenn Sie Ihren Zeichensatz auswählen.