C# 一些概念
来源:互联网 发布:中广核软件人员工资 编辑:程序博客网 时间:2024/06/06 03:52
1.托管代码:
托管代码就是执行过程交由运行时管理的代码。
这种情况下,CLR(公用语言运行时),不管使用的是哪种实现(Mono/.NET Framework或.NET Core)。CLR负责提取托管代码,将其编译成机器代码,然后执行它,CLR还需要提供多个重要服务,例如自动内存管理/安全边界/类型安全等。
相反,如果运行C/C++程序,则运行的代码也称为“非托管代码”。在非托管环境中,程序员需要自己处理很多事情。
实际的程序在本质上是操作系统(OS)载入内存,然后启动的二进制代码。
2.中间语言:
中间语言是编译使用高级.NET语言编写的代码后获取的结果。
IL独立于在运行时顶层运行的任何特定语言,拥有行业规范。
从高级代码生成IL后,CLR接管工作,启动实时(JIT)编译过程,或者将代码从IL实时编译成可以真正在CPU上运行的机器代码。
3.自动内存管理
公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。
分配内存
初始化进程时,运行时会为进行保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。托管堆上部署了所有引用类型。
释放内存
垃圾回收器的优化引擎根据所执行的分配决定执行回收的最佳时间。通过检测应用程序的根来确定不再使用的对象,释放应用程序不再使用的对象的内存。
4.泛型
本质上是代码模板
5.委托和Lambda
委托定义类型,类型指定特定方法签名。
Action<>:需要使用委托参数执行操作的情况
Func<>:用于现有转换的情况,需要将委托参数转换成其他结果时
Predicate<>:用于确定参数是否满足委托条件的情况,也可写作Func<T,bool>。
6.托管执行过程
A.选择编译器
若要获取公共语言运行时提供的好处,必须使用一个或多个面向运行时的语言编译器。
B.将代码编译成中间语言(MSIL)
当编译器生成MSIL的时候,他还生成元数据。元数据描述代码中的类型,包括每种类型的成员签名/代码引用的成员以及运行时在执行时间使用的其他数据。
C.将中间语言(MSIL)编译为本机代码
在执行时,实时(JIT)编译器将MSIL转换成为本机代码。在此编译期间,代码必须通检查MSIL和元数据的验证过程以查明是否可以将代码确定为安全类型
D.运行代码
7..NET中的序列化
序列化时将对象状态转换为可保持或传输的形式的过程,反序列化是将流转换为对象。这两个过程一起保证数据易于存储和传输。
- c#一些概念
- C# 一些概念
- C#中容易忽略的一些概念
- C#中一些易混淆概念总结
- C#中一些基本的概念
- 【C#小知识】C#中一些易混淆概念总结
- .NET概念:一些C#预处理器指令(转)
- .net asp.net C# vb.net 一些概念问题
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- 一些概念
- Android 微信支付接入笔记
- JVM的内存结构
- 页面操作全部采用调用函数方法实现(包括监听事件)
- Qt+gsoap调用WebService
- Python学习笔记_元组、字符串、序列
- C# 一些概念
- Leetcode-N-Queens II
- 微信多客户端导致重复调用服务接口问题
- 研究一下repartitionAndSortWithinPartitions算子
- SQL基本命令
- Android上JAVA Socket通信解析(二)多线程通信
- windows10中的Ubuntu
- 错误总结之no appropriate constructor in class
- Java + FlexPaper 实现 pdf 的预览功能