DllImportAttribute.ExactSpelling 欄位

定義

控制 CharSet 欄位是否會導致 Common Language Runtime 搜尋 Unmanaged DLL 以取得不是指定名稱的進入點名稱。

public bool ExactSpelling;

欄位值

範例

在某些情況下,Visual Basic 開發人員會使用 DllImportAttribute,而不是使用 Declare 語句,在 Managed 程式代碼中定義 DLL 函式。 ExactSpelling設定欄位是其中一種情況。

internal static class NativeMethods
{
    [DllImport("user32.dll", CharSet = CharSet.Unicode,
        ExactSpelling = true)]
    internal static extern int MessageBoxW(
        IntPtr hWnd, string lpText, string lpCption, uint uType);
}

備註

如果false為 ,則會在欄位設定CharSet.Ansi為 時DllImportAttribute.CharSet叫用以字母 A 附加的進入點名稱,並在欄位設定為 CharSet.UnicodeDllImportAttribute.CharSet叫用加上字母 W 的進入點名稱。 一般而言,Managed 編譯程式會設定此欄位。

下表根據程式設計語言所加加的預設值,顯示和 ExactSpelling 欄位之間的CharSet關聯性。 您可以覆寫預設設定,但請小心。

Language ANSI Unicode 自動
Visual Basic ExactSpelling:=True ExactSpelling:=True ExactSpelling:=False
C# ExactSpelling=false ExactSpelling=false ExactSpelling=false
C++ ExactSpelling=false ExactSpelling=false ExactSpelling=false

適用於

產品 版本
.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.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0