打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">外部(C#参考) | </font><font style="vertical-align: inherit;">微软

外部(C#参考)

  • 2分钟阅读

外部调用方法用于声明在实现的方法。当您使用互操作服务调用非属性方法,外部调用必须的一个常见用途是与DllImport一起使用。在这种情况下,该还声明为静态,如以下示例所示:

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

笔记

extern 关键字还可以定义外部程序集别名,这可以从单个程序集中引用不同的版本。有关详细信息,请参阅外部程序集名称(C#参考)

使用abstract(C#)和extern一起方法是错误的一起来修改同一个实例的。使用extern 调用符说明方法应该在C#代码之外实现,而使用抽象方法说明实现不在类中提供。

笔记

与 C++ 相比,extern 关键字的用途更为有限。要与 C++ 关键字进行比较,请参阅C++ 语言参考中的使用 extern 指定链接

例子

在此示例中,程序从用户接收一个字符串并使其显示在消息位置。该程序使用从 User32.dll 库导入的 MessageBox 方法。

C#
//using System.Runtime.InteropServices; 
    class ExternTest
    {
        [DllImport("User32.dll", CharSet=CharSet.Unicode)] 
        public static extern int MessageBox(IntPtr h, string m, string c, int type);

        static int Main()
        {
            string myString;
            Console.Write("Enter your message: ");
            myString = Console.ReadLine();
            return MessageBox((IntPtr)0, myString, "My Message Box", 0);
        }

    }

此示例从在下一个示例中从 C# 程序中调用的 C 程序创建一个 DLL。

// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
   return i*10;
}

本示例使用两个文件 CM.cs 和 Cmdll.c 来演示外部程序。C 文件是在示例 2 中创建的外部 DLL,它是从 C# 中调用的。

// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass 
{
   [DllImport("Cmdll.dll")]
   public static extern int SampleMethod(int x);

   static void Main() 
   {
      Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
   }
}
SampleMethod() 返回 50。

评论

要构建项目:

  • 使用 Visual C++ 命令行将 Cmdll.c 编译为 DLL:

    cl /LD Cmdll.c

  • 使用命令行编译CM.cs:

    csc CM.cs

这将创建可执行文件 CM.exe。运行此时,SampleMethod 程序值值 5 传递给 DLL 文件,之后返回乘以 10 的值。

C#语言规范

有关详细信息,请参阅C# 语言规范语言规范是 C# 语法和用法的权威来源。

也可以看看

参考

C# 关键字

中文符(C#参考)

System.Runtime.InteropServices.DllImportAttribute

概念

C#编程指南

其他资源

C# 参考

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
〖健康养生〗《80个👨‍🔧养生👨‍🔧小知识》
你知道女人最经不起什么诱惑
【普法】中华人民共和国民法典(全文)
杜甫五排《得家书》读记
六条混迹职场的方法策略,都是干货!
人要打破自己的界限,突破位阶,你才能活得自在
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服