CharSet Enum

Definition

Dictates which character set marshaled strings should use.

C#
public enum CharSet
C#
[System.Serializable]
public enum CharSet
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CharSet
Inheritance
Attributes

Fields

Name Value Description
None 1

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

Ansi 2

Marshal strings as multiple-byte character strings: the system default Windows (ANSI) code page on Windows, and UTF-8 on Unix.

Unicode 3

Marshal strings as Unicode 2-byte character strings.

Auto 4

Automatically marshal strings appropriately for the target operating system. See Charsets and marshaling for details. Although the common language runtime default is Auto, languages may override this default. For example, by default C# and Visual Basic mark all methods and types as Ansi.

Examples

The following code example shows how to specify a CharSet enumeration value when applying the StructLayoutAttribute to a managed definition.

C#
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct MyPerson
{
    public String first;
    public String last;
}

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

Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

See also