c#学习基础(2)存储、值类型和引用类型、变量

时间:2022-12-12 16:13:10

程序运行时,它的数据必须存储在内存中,数据项需要多大的内存、存储在什么地方以及如何存储都依赖该数据项的类型

运行中的程序使用两个区域来存储数据:栈和堆

栈是一个内存数组,是一个LIFO(last in first out后进先出)的数据结构

栈存储几种类型的数据:

某些类型变量的值

程序当前执行环境

传递给方法的参数

栈有以下几大特征

数据只能从栈的顶端插入和删除

把数据放到栈顶端称为入栈push

从栈顶删除数据称为出栈pop

堆是一块内存区域,在队里可以分配大块的内存用于存储某类型的数据。

与栈的不同,堆里的内存可以任意顺序存入和删除

程序可以在堆里保存数据,但并不能显示的删除她们,CLR的自动GC(GarbageCollector垃圾收集器)判断程序的代码将不会再访问某数据项时,自动清除无主的堆对象

---------值类型(数据存放栈中)和引用类型(引用存放在栈中-------指向数据堆中存放位置:数据存放堆中)

数据项的类型定义了存储数据需要的内存大小、组成该类型的数据成员以及该类型能执行的函数。还决定了对象在内存中的存储位置——栈和堆

类型被分两种:值类型和引用类型,两种类型的对象在内存中的存储方式不同

值类型只需要一段丹顿的内存,用于存储实际的数据

引用类型需要两段内存:

第一段存储实际的数据,它总是位于堆中

第二段是引用,指向数据在堆中的存放位置

存储引用类型对象的成员

引用类型对象的数据部分始终存放在堆里

值类型对象,或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里,这依赖实际环境

要记得:对于一个引用类型,其实例的数据部分始终存放在堆里

 

----------------------------------------------------变量

一种多用途的编程语言必须允许程序存放数据,而这正是通过变量实现

变量是一个名称,表示程序执行时存储在内存的数据

c#提供了4中变量

名称   类型的成员 描述
本地变量  否(临时) 在方法的作用域保存临时数据
字段 是(保存) 保存和类型相关的数据
参数 否(传递) 用于从一个方法到另一个方法传递数据的临时变量
数组元素 是(保存) 用于保存临时的或类型相关的数据

 

 

 

 

变量声明

在使用之前必须声明 

变量声明定义了变量,并完成了两件事:

给变量命名,并未他关联一种类型;

让编译器为它分配一块内存

一个简单变量类型声明至少需要一个类型和一个名称(如:int(类型) var1(名称))

在声明一个变量的同时要初始化(一些类型如果在声明时没有初始化,那么会被自动设为默认值(如:int默认值为0))

变量也可以多重声明(int var1=12,var3 var 2=5;)

变量名代表变量保存的值,可以通过使用变量名来使用值(Console.Writeline(“{0}”,var2))

 

------------------------------类

程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类。

类是一个能存储数据并执行代码的数据结构,它包含以下的内容

数据成员,它存储与类或类相关的数据。数据成员通常摸你该类所表示的现实世界事物的特性。

函数成员,它执行代码。函数成员通常模拟类所表示的现实事物的功能和操作

一个c#类中可以包含任意数据的数据成员和函数成员

成员可以是9种可能的成员类型的任意组合

数据成员                                                       函数成员——执行代码

字段                                                                方法 属性 构造函数 析构函数 运算符 索引 事件

常量

类是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事物

 

一个运行中的c#程序的一组相互作用的类型对象,它们中的大部分的类的实例

 

如果想使用类,就必须定义新类的特征和成员

类的名称

类的成员

类的特征