Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Le istruzioni seguenti sono per l'uso [DllImport] e devono essere seguite manualmente per ottenere risultati corretti. Gli utenti .NET 7+ devono invece prendere in considerazione l'uso [LibraryImport] . Un analizzatore Roslyn nella casella (abilitato per impostazione predefinita) fornirà indicazioni necessarie per l'attributo [LibraryImport] nel codice.
La modalità di marshalling dei valori char, degli oggetti string e degli oggetti System.Text.StringBuilder dipende dal valore del campo CharSet sia sulla struttura che su P/Invoke. È possibile impostare l'oggetto CharSet di un P/Invoke impostando il campo DllImportAttribute.CharSet durante la dichiarazione di un P/Invoke. Per impostare il CharSet di un tipo, impostare il campo StructLayoutAttribute.CharSet nella dichiarazione della classe o dello struct. Quando questi campi di attributo non sono impostati, spetta al compilatore del linguaggio determinare quale CharSet usare. Per impostazione predefinita, C#, Visual Basic e F# usano il None set di caratteri, che ha lo stesso comportamento del Ansi set di caratteri.
Se l'oggetto System.Runtime.InteropServices.DefaultCharSetAttribute viene applicato al modulo nel codice C# o Visual Basic, il compilatore C# o Visual Basic genererà l'oggetto fornito CharSet per impostazione predefinita anziché usare CharSet.None. F# non supporta DefaultCharSetAttribute ed emette sempre CharSet.None per impostazione predefinita.
Nella tabella seguente viene illustrato un mapping tra ogni set di caratteri e il modo in cui viene rappresentato un carattere o una stringa quando viene eseguito il marshalling con tale set di caratteri:
valore CharSet |
Finestre | .NET Core 2.2 e versioni precedenti in Unix | .NET Core 3.0 e versioni successive e Mono in Unix |
|---|---|---|---|
Ansi |
char
(tabella codici di Windows predefinita del sistema (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) |
Assicurarsi di conoscere la rappresentazione prevista dalla rappresentazione nativa durante la selezione del set di caratteri.