c#DllImport的问题,刚碰到的一个名词,希望有知道的人可以解答下,贴链接也可以
最近看到一个新名词:dllimport,就在网上查了一些资料,不想又碰到了托管和非托管的概念,进而又夺了,动态和静态的概念,一个接一个的概念,直接把我给弄晕了,还请高手指...
最近看到一个新名词:dllimport,就在网上查了一些资料,不想又碰到了托管和非托管的概念,进而又夺了,动态和静态的概念,一个接一个的概念,直接把我给弄晕了,还 请高手指教一下,最好能一下就可以理解这所有的概念到底是什么意思?
展开
2个回答
展开全部
用一个例子来解释
[DllImport("Kernel32.dll")]
private static extern bool AllocConsole();
1)DllImport告诉C#编译器:从动态链接库Kernel32.dll中,为我们的程序导入一个名为AllocConsole的函数。
2)extern,意思是外部的。可以这么理解 :这个AllocConsole函数不是在我们程序中编写的,而是存放在外部的动态链接库Kernel32.dll中
3)static,意思是静态的。可以这么理解:AllocConsole函数已经存在于Kernel32.dll了,是“客观存在的”,不是我们“动态创建的”
展开全部
DllImport是在C#中引入外部的DLL(动态链接库)的一个特性(Attribute),通过这个特性可以将被修饰的方法与外部DLL中的方法连接起来,从而达到调用的目的
托管是指由.NET Runtime进行管理的资源,这些资源由.NET统一支配,相当于在一个大的容器中,而不归他管的,就叫”非托管“,对于非托管的资源,在使用完后,.NET垃圾回收是无法回收的,所以需要在代码中进行手动释放,比如串口资源等
托管是指由.NET Runtime进行管理的资源,这些资源由.NET统一支配,相当于在一个大的容器中,而不归他管的,就叫”非托管“,对于非托管的资源,在使用完后,.NET垃圾回收是无法回收的,所以需要在代码中进行手动释放,比如串口资源等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询