我什么时候想使用extern?

时间:2014-08-12 18:01:31

标签: c#

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

在那个答案中,我注意到extern修饰符,我以前在代码中没有看到。

来自MSDN

  

" extern修饰符用于声明实现的方法   外部。外部修饰符的常见用法是使用DllImport   使用Interop服务调用非托管时的属性   。代码"

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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