CharSet Перечисление

Определение

Указывает, какой набор знаков должны использовать маршалированные строки.Dictates which character set marshaled strings should use.

public enum class CharSet
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum CharSet
type CharSet = 
Public Enum CharSet
Наследование
Атрибуты

Поля

Ansi 2

Маршалирует строки как многобайтовые символьные строки: системные значения по умолчанию — кодовая страница Windows (ANSI) в Windows и UTF-8 в Unix.Marshal strings as multiple-byte character strings: the system default Windows (ANSI) code page on Windows, and UTF-8 on Unix.

Auto 4

Выполняет автоматический маршалинг строк способом, соответствующим целевой операционной системе.Automatically marshal strings appropriately for the target operating system. Дополнительные сведения см. в разделе Наборы символов и маршалирование.See Charsets and marshaling for details. Хотя для среды CLR по умолчанию используется значение Auto, языки программирования могут переопределить это значение.Although the common language runtime default is Auto, languages may override this default. Например, C# и Visual Basic по умолчанию помечают все методы и типы как Ansi.For example, by default C# and Visual Basic mark all methods and types as Ansi.

None 1

Это значение устарело и по поведению аналогично значению Ansi.This value is obsolete and has the same behavior as Ansi.

Unicode 3

Маршалирует строки в виде 2-байтных символьных строк Юникода.Marshal strings as Unicode 2-byte character strings.

Примеры

В следующем примере кода показано, как указать CharSet значение перечисления при StructLayoutAttribute применении к управляемому определению.The following code example shows how to specify a CharSet enumeration value when applying the StructLayoutAttribute to a managed definition.

[StructLayout(LayoutKind::Sequential, CharSet=CharSet::Ansi)]
public ref struct MyPerson
{
public:
    String^ first;
    String^ last;
};
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct MyPerson
{
    public String first;
    public String last;
}
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
Public Structure MyPerson
    Public first As String
    Public last As String
End Structure

Комментарии

Поскольку существует несколько неуправляемых строковых типов и только один управляемый строковый тип, необходимо использовать кодировку, чтобы указать, как управляемые строки должны быть упакованы в неуправляемый код.Because there are several unmanaged string types and only one managed string type, you must use a character set to specify how managed strings should be marshaled to unmanaged code. Это перечисление, предоставляющее параметры кодировки, используется DllImportAttribute и StructLayoutAttribute.This enumeration, which provides character set options, is used by DllImportAttribute and StructLayoutAttribute. Подробное описание маршалинга строк и поведения сопоставления имен, связанных с этим перечислением, см. в разделе Указаниекодировки.For a detailed description of the string marshaling and name matching behavior associated with this enumeration, see Specifying a Character Set.

Применяется к

Дополнительно