DllImportAttribute.CharSet フィールド


文字列パラメーターをメソッドにマーシャリングし、名前マングルを制御する方法を示します。Indicates how to marshal string parameters to the method and controls name mangling.

public: System::Runtime::InteropServices::CharSet CharSet;
public System.Runtime.InteropServices.CharSet CharSet;
val mutable CharSet : System.Runtime.InteropServices.CharSet
Public CharSet As CharSet 



次のコード例は、属性を使用して Win32 関数をインポートする方法を示して DllImportAttribute MessageBox います。The following code example shows how to use the DllImportAttribute attribute to import the Win32 MessageBox function. このコード例では、インポートされたメソッドを呼び出します。The code example then calls the imported method.

using System;
using System.Runtime.InteropServices;

class Example
    // Use DllImport to import the Win32 MessageBox function.
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
    static void Main()
        // Call the MessageBox function using platform invoke.
        MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
Imports System.Runtime.InteropServices

Module Example

    ' Use DllImport to import the Win32 MessageBox function.
    <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
    Function MessageBox(ByVal hwnd As IntPtr, ByVal t As String, ByVal caption As String, ByVal t2 As UInt32) As Integer
    End Function

    Sub Main()
        ' Call the MessageBox function using platform invoke.
        MessageBox(New IntPtr(0), "Hello World!", "Hello Dialog", 0)
    End Sub

End Module


このフィールドを列挙体のメンバーと共に使用して、 CharSet 文字列パラメーターのマーシャリング動作を指定し、呼び出すエントリポイント名 (指定された正確な名前、または "a" または "W" で終わる名前) を指定します。Use this field with a member of the CharSet enumeration to specify the marshaling behavior of string parameters and to specify which entry-point name to invoke (the exact name given or a name ending with "A" or "W"). C# および Visual Basic の既定の列挙型のメンバーはで、 CharSet.Ansi C++ の既定の列挙体のメンバーはです CharSet.None 。これはと等価です CharSet.AnsiThe default enumeration member for C# and Visual Basic is CharSet.Ansi and the default enumeration member for C++ is CharSet.None, which is equivalent to CharSet.Ansi. Visual Basic では、ステートメントを使用し Declare てフィールドを指定し CharSet ます。In Visual Basic, you use the Declare statement to specify the CharSet field.

フィールドは、 ExactSpelling 呼び出すエントリポイント名を決定するときのフィールドの動作に影響し CharSet ます。The ExactSpelling field influences the behavior of the CharSet field in determining which entry-point name to invoke. フィールドに関連付けられている文字列のマーシャリングと名前の一致動作の詳細な説明と例につい CharSet ては、「 文字セットの指定」を参照してください。For a detailed description and examples of the string marshaling and name matching behavior associated with the CharSet field, see Specifying a Character Set.