首页 > 编程语言 >C# 的托管资源和非托管资源都有哪些

C# 的托管资源和非托管资源都有哪些

时间:2023-12-07 14:47:14浏览次数:48  
标签:C# 托管 访问 API 资源 CLR

C#的托管资源是由CLR(公共语言运行时)管理的资源,CLR在程序运行时会自动分配和回收托管资源,开发者无需手动管理。包括但不限于以下几种:

1. 对象:C#中的所有对象都是托管资源,包括类对象、数组、委托、接口等。 2. 内存:C#中的内存管理是由CLR自动进行的,CLR会自动为对象分配内存,并在对象不再使用时自动回收内存。 3. 线程:C#中的线程是托管线程,由CLR进行管理。 4. 异常处理:C#中的异常处理机制也是由CLR进行管理的,CLR会自动捕获并处理异常。 5. IO操作:C#中的IO操作也是由CLR进行管理的,CLR提供了一系列的类和接口来实现文件读写(FileStream 类就是一个托管类,它继承自 Stream 类,提供了对磁盘文件的读写操作)、网络通信等IO操作。 6. 反射:C#中的反射机制也是托管资源,通过反射可以动态地获取和操作程序集、类型、成员等。 7. 事件:C#中的事件机制也是托管资源,事件的订阅和触发都是由CLR进行管理的。

 

 

非托管资源是由操作系统管理的资源,这些资源需要手动分配和释放,否则会导致内存泄漏和资源泄漏等问题。包括但不限于以下几种:

1. COM组件:COM组件是一种非托管代码,它们是以二进制格式编写的动态链接库(DLL)。在C#中,可以使用Interop服务来访问COM组件。 2. Win32 API:Win32 API是一组用于访问Windows操作系统的函数和数据结构。这些函数和数据结构是以非托管的C/C++语言编写的,可以使用DllImport属性在C#中访问它们。 3. 非托管DLL:非托管DLL是由C/C++编写的动态链接库,其中包含了与操作系统相关的功能。可以使用DllImport属性在C#中访问非托管DLL。 4. 文件系统:文件系统是一种非托管资源,它包含了文件和文件夹,可以使用System.IO命名空间中的类来访问它们。一些非托管的 API,比如 Win32 API 中的 CreateFile、ReadFile、WriteFile 等函数。 5. 数据库:数据库是一种非托管资源,它包含了数据和结构,可以使用ADO.NET或其他ORM框架来访问它们。-*/ 6. 网络:网络是一种非托管资源,它包含了网络协议和设备,可以使用System.Net命名空间中的类来访问它们。 7. 图形界面:图形界面是一种非托管资源,它包含了窗口、控件和图形渲染,可以使用Windows Forms、WPF或其他UI框架来访问它们。

标签:C#,托管,访问,API,资源,CLR
From: https://www.cnblogs.com/LXLR/p/17877582.html

相关文章

  • activiti7.1.0.M6流程图预览和进度高亮查看
    activiti7移除了静态方法创建ProcessDiagramGenerator,需要创建DefaultProcessDiagramGenerator实例依赖:<properties><batik-transcoder.version>1.17</batik-transcoder.version><batik-codec.version>1.17</batik-codec.version>......
  • oracle表空间不足
    进入数据库服务器,我一般用的finalshell1.suoracleps:切换到oracle身份后用户的家目录和PATH仍然是原先用户的家目录和PATH2.surootps:输入密码后进入3.su-oracleps:相当于重新登陆,此时用户的家目录和PATH等信息会发生改变4.sqlplus/assysdbaps:进入sql指令环境5.al......
  • classnames的理解
    本篇文章主要是学习classnames的相关理解及使用。下面列举的是如何在项目中使用安装方式npminstallclassnames使用方式引入时可使用require的方式引入,也可以通过import的方式引入使用方法importclassnamesform'classnamesclassnames('foo','bar')=='foobar'cla......
  • UE蓝图类型转换object引用
    一.常用的记住1.角色之间,获取玩家角色,玩家控制器2.动画蓝图,获取玩家动画3.在游戏模式中记录变量,方便类型转换。但是会影响运行速度4.playerstate优先与gamemode可以使用二.对象发生关系1.重叠对象,触发,打击,引出引脚actor2.getallactor寻找,(getwigdet控件也可以这样找),......
  • Eclipse复制(Ctrl+C)粘贴(Ctrl+V)会卡顿
    问题场景:使用Eclipse复制(Ctrl+C)粘贴(Ctrl+V)会卡顿问题原因:与Eclispe的超链接快捷键Ctrl冲突导致,在使用快捷键Ctrl+C或者Ctrl+V复制粘贴时,会触发超链接功能,然后Eclipse会先去执行超链接的工作,最后再执行我们想要的复制粘贴,导致复制粘贴时的卡顿。解决方案:将超链接快捷键从Ctrl......
  • 安装CentOS 7.9系统
     CentOS7.9Everything下载地址:http://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2207-02.iso              ......
  • m基于FPGA的8PSK调制解调系统verilog实现,包含testbench测试文件
    1.算法仿真效果vivado仿真结果如下:   借助matlab看8PSK的星座图:   2.算法涉及理论知识概要        随着通信技术的不断发展,相位调制技术因其高频谱效率和抗干扰能力而广泛应用于无线通信系统中。其中,8PSK(8相位相移键控)作为一种高阶调制方式,具有更高的频......
  • 实验四 Web服务器1-socket编程
    基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:1.time服务器的客户端服务器,提交程序运行截图3.服务器部署到华为云服务器,客户端用Ubuntu虚拟机。time服务器代码(tms.c)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include......
  • 【题解】CodeForces 1902F Trees and XOR Queries Again
    传送门:https://codeforces.com/contest/1902/problem/F数据结构题,这里讲两种思路。$ST$表思路:判定“从若干个数中能否取出其中一些,使得异或和为$x$”的问题,第一时间想到线性基,本题要做的显然就是快速求出询问路径上所有数的线性基。两组数的线性基可以合并,方法为“暴力将......
  • c# 文件上传与下载
    文件上传: API上传的方法://上传的文件格式publicstring[]ExtentsfileName=newstring[]{".doc",".xls",".png",".jpg"};//路径publicstringUrlPath="/Upload/";///<summary&......