CharSet CharSet CharSet CharSet Enum

Definition

Dictates which character set marshaled strings should use.

public enum class CharSet
[System.Runtime.InteropServices.ComVisible(true)]
public enum CharSet
type CharSet = 
Public Enum CharSet
Inheritance
Attributes

Fields

Ansi Ansi Ansi Ansi 2

Marshal strings as multiple-byte character strings.

Auto Auto Auto Auto 4

Automatically marshal strings appropriately for the target operating system. The default is Unicode on Windows NT, Windows 2000, Windows XP, and the Windows Server 2003 family; the default is Ansi on Windows 98 and Windows Me. Although the common language runtime default is Auto, languages may override this default. For example, by default C# marks all methods and types as Ansi.

None None None None 1

This value is obsolete and has the same behavior as Ansi.

Unicode Unicode Unicode Unicode 3

Marshal strings as Unicode 2-byte characters.

Examples

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

Remarks

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. 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.

Applies to

See Also