【问题标题】:When would I want to use extern?我什么时候想使用外部?
【发布时间】:2014-08-12 18:01:30
【问题描述】:

在 Winforms 中编写客户端应用程序时,我遇到了 this question 关于在文本框中放置一个按钮而不会干扰文本框本身的视图。

在那个答案中,我注意到了 extern 修饰符,这是我以前在代码中没有见过的。

来自MSDN

"extern修饰符用于声明实现的方法 外部。 extern 修饰符的一个常见用途是与 DllImport 使用互操作服务调用非托管服务时的属性 代码。”

这正是我在相关问题中看到的使用方式。我不明白为什么有必要为此调用 user32 外部函数,但这可能应该在一个单独的问题中提出。

所以我的问题是,我应该在什么时候使用 extern 修饰符?为什么比简单地将 dll 添加到您的引用中并直接使用它更好?

【问题讨论】:

  • 如果该库不是 .NET dll 怎么办?

标签: c#


【解决方案1】:

不要将非托管 DLL 与 .NET 程序集混淆。仅仅因为扩展名是.dll 并不意味着您可以添加对它的引用。

很简单:如果要在非托管 DLL 中调用 C 函数,请使用 [DllImport(...)]static extern 修饰符。将其添加为引用将不起作用,因为它不是 .NET 程序集。

如果要调用托管 .NET 程序集中的方法,请将其添加为引用,然后可以使用 C# 代码直接调用该方法。

【讨论】:

  • 这更有意义。我认为我看到的与user32.dll 一起使用的示例让我失望。谢谢!
猜你喜欢
  • 2010-10-19
  • 1970-01-01
  • 2011-06-09
  • 2019-09-23
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多