在Winforms中编写客户端应用程序时,我遇到this question关于在文本框中放置按钮而不会干扰文本框本身的视图。
在那个答案中,我注意到extern修饰符,我以前在代码中没有看到。
来自MSDN:
" extern修饰符用于声明实现的方法 外部。外部修饰符的常见用法是使用DllImport 使用Interop服务调用非托管时的属性 。代码"
这正是我在相关问题中使用的方式。我不明白为什么有必要为此调用user32外部函数,但这应该在一个单独的问题中提出。
所以我的问题是,什么时候extern是我应该使用的修饰符?为什么它比简单地将dll添加到您的引用并直接使用它更好?
答案 0 :(得分:3)
不要将非托管DLL与.NET程序集混淆。仅因为扩展名为.dll
并不意味着您可以添加对它的引用。
非常简单:如果要在非托管DLL中调用C函数,可以使用[DllImport(...)]
和static extern
修饰符。添加它作为参考将不起作用,因为它不是.NET程序集。
如果要在托管.NET程序集中调用方法,可以将其添加为引用,然后可以使用C#代码直接调用该方法。