1
c#程序是一种类型声明。
类型是一种创建数据结构的模板,描述了该模板创造对象的特征。
类型由以下元素定义:
- 名称
- 保存数据成员的数据结构
- 行为及约束条件
2 实例化类型
类型模板创建的对象。
3 数据成员和函数成员
数据成员:属性
函数成员:执行代码
4 预定义类型
无需定义,c#自带的类型
5 用户定义类型
- class
- struct
- array
- enum
- delegate
- interface
类型通过类型声明创建,类型声明包括信息
- 要创建的类型的种类
- 类型的名称
- 类型中每个成员的声明
声明了类型就可以用了
6 堆和栈
使用堆和栈这两个内存区域来存储数据
6.1栈
栈是一个内存数组,遵循后进先出的数据结构
存储在栈中的类型
- 某些类型变量的值
- 程序当前的执行环境
- 传递给方法的参数
栈的几个特征
- 数据只能从栈的顶端插入和删除
- 把数据放到栈的顶端称为入栈 push
- 从栈顶删除数据称作出栈 pop
6.2堆
堆是一块内存区域,在堆里可以分配内存存储类型的对象。
堆的内存可以以任意顺序存入和移除。
7 值类型和引用类型
类型被分为两种,值类型和引用类型。
两种类型的对象在内存中存储的方式不同。
当数据是该类型的成员时
- 值类型只需要一段单独的内存,用于存储实际的数据。存放在栈中。
- 引用类型需要两段内存。
- 第一段存储实际的数据,一般位于堆中。
- 第二段是一个引用,用于指明数据在堆中存放的位置。存放在栈中。
7.1存储引用类型对象的成员
如果数据不是该类型的成员
- 引用类型的数据部分始终存放在堆里
- 值类型对象和引用类型的引用部分依据情况放在堆和栈里。对象数据的部分都放在堆里。
7.2c#类型的分类
8 变量
用于存取数据。
-
表示程序执行时存储在内存里的数据。
-
c#有四种变量
8.1变量的声明
变量的声明定义了变量,并完成了两件事:
- 给变量命名并为它关联一种类型
- 让编译器为它分配一块内存
类型 名称
int var;
变量初始化语句
能把它的内存初始化为一个明确的值
int var2=17;
未赋值之前不能使用无初始化语句的变量。
自动初始化
有些类型的变量如果在声明时没有初始化语句,会被自动设为默认值。
多重变量声明
可以吧多个变量声明在一条单独的声明语句中。
- 多重变量声明中的变量必须类型相同。
- 变量名必须用逗号分隔,可以在变量名后包含初始化语句。
int var1=7,var4,var5=2;
使用变量的值
Console.WriteLine(“{0}”,var2);
9 静态类型和dynamic关键字
变量类型使编译器确定哪些可以存在栈上哪些可以存在堆上。
静态类型,变量的类型在编译的时候确定并且不能在运行时修改。
dynamic 动态化的静态类型
9.1可空类型
可空类型允许创建可以标记为有效或无效的值类型
创建可空类型
可空类型基于底层类型
- 可以从任何值类型创建可空类型,包括预定义的简单类型
- 不可以从引用类型和其他可空类型创建可空类型
- 无需显式声明可空类型,只需声明可空类型的变量即可
在底层类型的后面加一个?就可以创建可空类型变量
int? var=22;
读取可空类型变量返回其值,但要确保变量不是null,如果读取null变量的值会产生异常。