C#笔记03 类型、存储和变量

C#笔记03 类型、存储和变量

——C#程序是一组类型声明

1. 类型是一种模版

学习C#就是学习如何创建和使用类型。可以把类型想象成一个用来创建数据结构的模版。模版本身并不是数据结构,但它详细说明了由该模版构造的对象的特征。———人民邮电出版社《C#2008 C#图解教程》

类型由下面的元素定义:

  • 名称
  • 用于保存数据成员的数据结构
  • 一些行为及约束条件

2. 实例化类型

从某个类型模版创造实际的对象称为实例化该类型
C#中,每个数据项都是某种类型的实例。 这些类型可以是

  • 语言自带的
  • BCL或其他库提供的
  • 程序员定义的(class)

3. 数据成员和函数成员

short、int和long等类型称为简单类型。这种类型只能存储一个数据项。
其他的类型可以存储多个同类型的数据项。
另外一些类型可以包含许多不同类型的数据项,这些类型中的数据项个体称为成员,有两种成员: 数据成员和函数成员:

  • 数据成员保存了与这个类的对象或类本身相关的数据。
  • 函数成员执行代码。函数成员定义类型的行为。

4. 预定义类型

C#提供了15种预定义类型,其中包括13种简单类型和2种非简单类型。
所有预定义类型的名称都由全小写的字母组成。预定义的简单类型包括:
3.1

  • 8种整数类型
类型含义.NET框架类型允许的值
sbyte8位有符号整数System.SByte在–128~127之间的整数
byte8位无符号整数System.Byte在0~255之间的整数
short16位有符号整数System.Int16在–32768~32767之间的整数
ushort16位无符号整数System.UInt16在0~65535之间的整数
int32位有符号整数System.Int32在–2147483648~2147483647之间的整数
uint32位无符号整数System.UInt32在0~4294967295之间的整数
long64位有符号整数System.Int64在–9223372036854775808~9223372036854775807之间的整数
ulong64位无符号整数System.UInt64在0~18446744073709551615之间的整数

*字节是二进制数据的单位。一个字节通常8位长
“u”是unsigned的缩写,表示不能在这些类型的变量中存储负数

  • 3种浮点类型
类型含义.NET框架类型m的最小值m的最大值e的最小值e的最大值近似的最小值近似的最大值
float单精度浮点数System.Single02^24–1491041.5×10^-453.4×10^38
double双精度浮点数System.Double02^53–10759705.0×10^-3241.7×10^308
decimal28位数字精度System.Decimal02^96–280±1.0×10^28±7.9×10^28

*前两种可以用+/- m×2e的形式存储浮点数,decimal使用另一种形式:+/- m×10e

  • 2种非数值类型
类型.NET框架类型允许的值
charSystem.CharU+0000~U+ffff,一个Unicode字符,存储0~65535之间的整数
boolSystem.Boolean布尔值,true或false

*Unicode编码:Unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode编码共有三种具体实现,分别为UTF-8,UTF-16,UTF-32,其中UTF-8占用一到四个字节,UTF-16占用二或四个字节,UTF-32占用四个字节。

  • 其他2种非简单类型
类型含义.NET框架类型
object所有其他类型的基类System.Object
stringUnicode字符序列System.String

5. 用户定义类型

除了15种预定义类型,还可以创建自己的用户定义类型,有6种类型:

  • 类类型(class)
  • 结构类型(struct)
  • 数组类型(array)
  • 枚举类型(enum)
  • 委托类型(delegate)
  • 接口类型(interface)

类型通过类型声明创建,类型声明包含以下信息:

  • 要创建的类型的种类
  • 新类型的名称
  • 对类型中每个成员的声明 〈名称和规格) 。array和delegate类型除外,它们不含有命名成员

一旦声明了类型,就可以创建和使用这种类型的对象,就像它们是预定义类型一样。

*定义类型只需要进行实例化,用户定义类型需要两步, 声明和实例化。

6. 栈和堆

栈是一个内存数组,是一个LIFO (last-in first-out,后进先出) 的数据结构。 栈存储几种类型的数据:

  • 某些类型变量的值
  • 程序当前的执行环境
  • 传递给方法的参数

栈有如下几个普遍特征

  • 数据只能从栈的顶端插入和删除
  • 把数据放到栈顶称为入栈 (push)
  • 从栈顶删除数据称为出栈 (pop)

堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据。与栈不同,堆里的内存可以任意顺序存入和移除

7. 值类型和引用类型

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

  • 值类型:只需要一段内存,存储实际的数据
  • 引用类型:需要一段存储实际的数据,一段引用(存放在栈中),指向数据在堆中存放的位置
    3.2

8. 变量

变量是一个名称,表示程序执行时存储在内存中的数据。
变量在使用之前必须声明。即给变量指定名称和类型,让编译器为它分配一块内存

<type> <name>;

多重变量声明:把多个相同类型的变量声明在一条单独的声明语句中,用逗号隔开
例:

int var1 = 6, var2 = 4, var3 = 5;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值