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 System.Runtime.InteropServices.DllImportAttribute and System.Runtime.InteropServices.StructLayoutAttribute. For a detailed description of the string marshaling and name matching behavior associated with this enumeration, see Specifying a Character Set.
Marshal strings as multiple-byte character strings.
Automatically marshal strings appropriately for the target operating system. The default is CharSet.Unicode on Windows NT, Windows 2000, Windows XP, and the Windows Server 2003 family; the default is CharSet.Ansi on Windows 98 and Windows Me. Although the common language runtime default is CharSet.Auto, languages may override this default. For example, by default C# marks all methods and types as CharSet.Ansi.
This value is obsolete and has the same behavior as CharSet.Ansi.
Marshal strings as Unicode 2-byte characters.