在C#中,extern
关键字用于声明一个方法是在外部代码中实现的。这通常用于调用非托管代码(如C++编写的代码)或与本地共享库(如.dll文件)交互。使用extern
时,你需要提供一个函数声明,该声明指定了方法的名称、返回类型和参数列表。然后,你可以在C#代码中使用这个声明来调用该方法,就像它是在C#中实现的一样。
以下是一个简单的示例,展示了如何在C#中使用extern
关键字调用一个外部方法:
AddNumbers
的方法,该方法接受两个整数参数并返回它们的和。你可以使用C++/CLI来创建一个包装器类,以便在C#中调用这个方法。// C++/CLI wrapper class
public ref class MathWrapper {
public:
static int AddNumbers(int a, int b) {
return a + b;
}
};
extern
关键字声明一个与MathWrapper::AddNumbers
方法对应的方法。请注意,你需要使用DllImport
属性来指定共享库的名称和位置。using System;
using System.Runtime.InteropServices;
class Program {
// Declare the extern method using P/Invoke
[DllImport("MathLibrary.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AddNumbers(int a, int b);
static void Main() {
int result = AddNumbers(3, 4);
Console.WriteLine("The sum is: " + result);
}
}
在这个例子中,DllImport
属性指定了共享库的名称(在这种情况下为MathLibrary.dll
)以及调用约定(在这种情况下为CallingConvention.Cdecl
)。请确保将共享库放在C#项目的输出目录中,或者提供正确的路径。
现在,当你运行C#程序时,它将调用C++编写的AddNumbers
方法,并将结果输出到控制台。