跳转到内容

C# 编程/关键字/extern

来自 Wikibooks,开放的书籍,面向开放的世界

关键字 extern 表示正在调用的方法存在于 DLL 中。

一个名为 tlbimp.exe 的工具可以创建一个包装程序集,允许 C# 与 DLL 交互,就像它是一个 .NET 程序集一样,即使用构造函数实例化它,调用它的方法。

旧的 DLL 不适用于此方法。相反,您必须明确告诉编译器要调用哪个 DLL,要调用哪个方法以及要传递哪些参数。由于参数类型非常重要,您还可以显式定义应将什么类型传递给方法作为参数。

以下是一个示例

using System;
using System.Runtime.InteropServices;

namespace ExternKeyword
{
     public class Program
     {
          static void Main()
          {
               NativeMethods.MessageBoxEx(IntPtr.Zero, "Hello there", "Caption here", 0, 0);
          }
     }
  
     public class NativeMethods
     {
          [DllImport("user32.dll")]
          public static extern MessageBoxEx(IntPtr hWnd, string lpText, string lpCaption, uint uType, short wLanguageId);
     }
}

[DllImport("user32.dll")] 告诉编译器要引用哪个 DLL。Windows 按 PATH 环境变量定义的方式搜索文件,因此将在失败之前搜索这些路径。

该方法也是静态的,因为 DLL 可能不理解如何被“创建”,因为 DLL 可以用不同的语言创建。这允许直接调用该方法,而不是实例化它然后使用它。


C# 关键字
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using var virtual
void volatile while
特殊的 C# 标识符(上下文关键字)
add alias async await dynamic
get global nameof partial remove
set value when where yield
上下文关键字(用于查询)
ascending by descending equals from
group in into join let
on orderby select where
华夏公益教科书