[C#基础] 数据类型
预定义类型
C#提供了16种预定义类型,其中包括13种简单类型和3种非简单类型。
预定义的简单类型包括以下3种:
- 11种数值类型
- 不同长度有符号和无符号的整数类型(8种)
- 浮点数类型float和double(2种)
- 高精度小数类型decimal(1种)decimal类型常用于货比计算
- 一种Unicode字符类型char
- 一种布尔类型
3种非简单类型
- string,它是一个Unicode字符数组
- object,它是所有其他类型的基类
- dynamic,使用动态语言编写的程序集使用
预定义简单类型表示一个单一的数据项,下表列出了这些类型,取值范围和对应的底层.NET类型
预定义非简单类型如下:
用户定义类型
除了C#提供的16种预定义类型,还可以自己创建类型。有6种类型可以让用户创建
- 类类型(class)
- 结构类型(struct)
- 数组类型(array)
- 枚举类型(enum)
- 委托类型(delegate)
- 接口类型(interface)
栈和堆
运行中的程序使用两个内存区域来存储数据:栈和堆
栈
栈是一个内存数据,后进先出的数据结构。栈存储几种类型的数据:
- 某些类型变量的值
- 程序当前的执行环境
- 传递给方法的参数
栈的特征
- 数据只能从栈的顶端插入或删除
- 把数据放到栈顶称为入栈
- 从栈顶删除数据称为出栈
堆
堆是一块内存区域,与栈不同,堆的内存数据可以从任意位置插入或删除
虽然程序可以在堆里保存数据,但并不能显示删除地删除它们。CLR的自动GC在判断出程序的代码将不会再访问某数据项时,自动清除无用的堆对象
值类型和引用类型
数据项的类型定义存储数据所需的内存大小及组成该类型的数据成员。类型还决定了对象在内存中的存储位置---栈或堆
类型被分为两种:值类型和引用类型
- 值类型只需一段单独的内存,用于存储实际的数据
- 引用类型需要两段内存
- 第一段存储实际的数据,它总是位于堆中
- 第二段是一个引用,指向数据在堆中的存放位置
C#类型的分类
上文列出了C#中可以使用的所有类型以及它们的类别:值类型或引用类型
变量
- 变量是一个名词,表示程序执行时存储在内存中的数据
- C#提供了4种变量
结尾
终于迈出了第一步。。。