.Net C#(框架/值类型/参数类型)——学习笔记

来源:互联网 发布:mysql 修复数据表命令 编辑:程序博客网 时间:2024/06/16 02:35

.Net框架

特性:

  • 执行环境:安全、多平台、高性能
  • 开发环境:面向对象、一致的编程体验、行业标准的通信、简化的部署、语言独立、互操作性

组成:

  • 编程工具:VS集成开发环境、.Net兼容的编译器、调试器、服务器端改进
  • 基类库(BCL):.Net框架使用的类库
  • 公共语言运行库(CLR):内存管理、代码安全验证、代码执行、垃圾收集(GC)

运行流程:

  1. 使用.Net兼容语言(C#等)编写源代码
  2. .Net兼容编译器进行编译
  3. 产生程序集:可执行文件或dll,其中代码为公共中间语言(CIL),还包括程序的类型信息与安全信息
  4. JIT(实时)编译器进行编译:只编译调用到的代码,CLR进行管理
  5. 生成本机代码
  6. 与操作系统服务作用

CLR:

  • .Net核心组件,在操作系统顶层并管理程序的执行。
  • 提供服务:内存管理、异常处理、垃圾收集、反射服务、JIT编译器、类加载器、安全服务

值类型与引用类型:

存储方式:

  • 值类型:数据存放在栈中。
  • 引用类型:需要两段内存,第一段存储实际数据,位于堆中;第二段是一个引用,存放在栈里。(引用类型实例中的值类型数据也存放于堆中)包括:object、string、class、interface(接口类型)、delegate(委托类型)、array。

方法调用

  • 值类型:值不受方法行为影响。(方法开始时,在栈中为形参分配空间并从实参复制值。所以产生了独立的数据项。)
  • 引用类型:值被方法的行为改变。(只复制了栈中的引用部分,堆中的数据被改变了。)

各种参数类型:

  • 值参数:

方法调用时,系统在栈中为形参分配空间,再复制实参到形参。结束后实参未改变

  • 引用参数:

形参名和实参名引用相同的内存位置,即可以在函数体内修改实参的值
声明:void Method(ref int a){......}
调用:Method(ref A);

  • 输出参数:

类似于引用参数,但可以在方法内部调用前赋值,可以不初始化。方法返回前每个参数必须被赋值
使用 out 修饰符。 

  • 数组参数:

允许传递可变数目的实参到方法中。
使用params 修饰符

0 0