c#DllImport的问题,刚碰到的一个名词,希望有知道的人可以解答下,贴链接也可以

最近看到一个新名词:dllimport,就在网上查了一些资料,不想又碰到了托管和非托管的概念,进而又夺了,动态和静态的概念,一个接一个的概念,直接把我给弄晕了,还请高手指... 最近看到一个新名词:dllimport,就在网上查了一些资料,不想又碰到了托管和非托管的概念,进而又夺了,动态和静态的概念,一个接一个的概念,直接把我给弄晕了,还 请高手指教一下,最好能一下就可以理解这所有的概念到底是什么意思? 展开
 我来答
freeeeeewind
推荐于2016-06-21 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1350万
展开全部

用一个例子来解释

 [DllImport("Kernel32.dll")]
 private static extern bool AllocConsole();

1)DllImport告诉C#编译器:从动态链接库Kernel32.dll中,为我们的程序导入一个名为AllocConsole的函数。

2)extern,意思是外部的。可以这么理解 :这个AllocConsole函数不是在我们程序中编写的,而是存放在外部的动态链接库Kernel32.dll中

3)static,意思是静态的。可以这么理解:AllocConsole函数已经存在于Kernel32.dll了,是“客观存在的”,不是我们“动态创建的”

一颗程序猿o_0
2014-11-05 · TA获得超过6298个赞
知道大有可为答主
回答量:5403
采纳率:77%
帮助的人:1360万
展开全部
DllImport是在C#中引入外部的DLL(动态链接库)的一个特性(Attribute),通过这个特性可以将被修饰的方法与外部DLL中的方法连接起来,从而达到调用的目的
托管是指由.NET Runtime进行管理的资源,这些资源由.NET统一支配,相当于在一个大的容器中,而不归他管的,就叫”非托管“,对于非托管的资源,在使用完后,.NET垃圾回收是无法回收的,所以需要在代码中进行手动释放,比如串口资源等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式