extern修饰符通常与DllImport属性一起使用,从而使外部方法可以由DLL(动态链接库)实现。执行环境可以支持其他用来提供外部方法实现的机制。当外部方法包含DllImport属性时,该方法声明必须同时包含一个static修饰符。
在使用DLLImport属性时,一定要引入System.Runtime.InteropServices命名空间,此命名空间是提供各种各样支持COM interop及平台调用服务的成员。
例四、通过外部方法和Dlllmport属性调用“User32.dll”实例自定义信息提示框的功能
<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;//必须引入的命名空间
namespace Text
{
class Program
{
[DllImport("User32.dll")]//调用User32.dll
public static extern int MessageBox(int H, string m, string c, int type);//定义的外部方法
static int Main(string[] args)
{
Console.Write("请输入信息:");
string str = Console.ReadLine();//接受输入的信息
return MessageBox(0,str,"我的信息提示框",0);//以信息提示框输出
}
}
}</span>
输出的结果为:

五、分部方法
若一个方法声明中含有partial修饰符,则称该方法为分部方法。只能讲分部方法声明为分部类型的成员,而且要遵守约束数目。分部方法有着严格的限制。分部方法必须在分部类或分部机构内声明。它们必须是私有的,不能返回值,不能有输出参数。因为任何针对没有被实现的分部方法的调用都会简单地被忽略,所以说这些限制是非常有必要的。
分部方法不能作为一个明确分配的变量,仅被代码生成器在处理轻量级事件的时候使用。假设用户解析一个数据库或者一个XML文件,然后生成了数据类,结果会发现有数十个类,几百个属性以及一大堆泛型和模板文件等。分部方法另外一个经常被用到的地方是验证,或者让属性的setter去更新另一个属性。所以如果用户要使用产生的代码,或者在运行时有几百个事件和千个方法调用的话(其实大多数情况下只用到了其中的一点点),就可以选择分部方法。分部方法在声明和使用时要比事件容易得多,如果没有用到它们,它们就会消失。从分部方法必须是私有的限制中,










