extern 修饰符用于声明在外部实现的方法。当您使用互操作服务调用非托管代码时,extern 修饰符的常见用法是与 DllImport 属性一起使用。在这种情况下,方法也必须声明为 static 的,如下面的例子所示:

[ DllImport ( "avifil32.dll" ) ]
private static extern void AVIFileInit ( );

extern 关键字还可以定义外部程序集别名,这样就可以从单个程序集内引用同一组件的不同版本。

同时使用 abstract 修饰符和 extern 修饰符修饰同一成员是错误的。使用 extern 修饰符意味着该方法是在 C# 代码外部实现的,而使用 abstract 修饰符意味着该方法的实现不在类中提供。

与 C++ 相比,extern 关键字在 C# 中的使用更为有限。

自定义的消息框

在这个例子中,程序从用户那里接收一个字符串,并将其显示在一个消息框中。该程序使用从 User32 . dll 库导入的 MessageBox 方法。

internal class Program
    {
    [DllImport ( "User32.dll" , CharSet = CharSet . Unicode )]
    public static extern int MessageBox ( IntPtr h , string XX , string BT , int LX );
    static int Main ( string [ ] args )
        {
        string? XiaoXi;
        Console . Write ( "请输入你的消息:" );
        XiaoXi = Console . ReadLine ( );
        if ( XiaoXi != null )
            {
            return MessageBox ( ( IntPtr ) 0 , XiaoXi , "消息框" , 0 );
            }
        else
            {
            return 0;
            }
        }
    }

兔子码农
4 声望1 粉丝

一个酒晕子