刘铁猛7——类型,变量与对象详解(下)
1)蓝色表示是常用的数据类型,C#将其吸收为关键字了。
2)蓝色表示这些数据类型都是基本数据类型,也叫内建数据类型。别的类型都是拿这些类型构成的。
本节讲C#语言的数据类型及其之间的关系。
如何知道一个成员是不是一个类
1)调用MSDN文档,快捷键
2)用Type语句获知全名后,贴到MSDN文档index栏查询
Type myType = typeof(FormatException);
Console.WriteLine(myType.FullName);
3)用IsClass查询
Type myType = typeof(FormatException);
Console.WriteLine(myType.IsClass);
4) 最直接的方法,选中要查询的成员,右键点击“go to definition”,来到微软创建该成员时定义它的地方。定义时就是class。基类是System.Exception.
C#的五种主要数据类型,归为两类(reference和value)
1)Class,用于声明和定义类。
2)Struct 结构体类型:
如:int,Long等,太常用了,C#吸收它们为关键字了。实际上写成int32,int64也行。
3)Enum 枚举类型:给定集合,只能从集合中选值,不能随便取值。
E.g. form类,窗口只有三种状态(Mazimized,Minimized和Normal),最大化,最小化,调整size。
委托和接口都是高级类型,本节课不讲。
C#的数据类型系统
这些数据类型,构成了C#的数据类型系统,树状,有层级结构。
object:位于树状结构的根部,为基类型,分出两大数据类型分组:reference 和 value
1)Reference 引用类型,分为三种:
A)类:
a)Object和String,是真正的数据类型中的类,因为太常用,被吸收为关键字了。
b)Class,Interface,delegate,都只是关键字。不是一个类,只是用来定义类的关键字。
B)接口
C)委托
2)Value 值类型,分为两种
A)结构体:
a)以下是真正的数据类型
b)Struct,只是关键字。不是一个结构体数值类型,只是用来定义结构体类型的关键字。
B)枚举
true 和 false是bool数值类型的值,只能有这两种。
void 和 null 是函数的返回值,void不需要返回值,null一个引用变量不引用任何实例,引用值为空。
var 和 dynamic 用来声明变量。
变量
1)静态字段(静态变量)
2)字段(或,成员变量)(实例变量)
3)数组元素
4)值参数
5)引用参数
6)输出形参
7)局部变量(狭义的变量指局部变量,平时也简称为变量),因为其他种类的变量都有自己的名称了。局部变量就是声明在方法体内的变量。
值类型在内存中的存贮
sbyte,带正负号的,最高位为0代表正数,为1代表负数
计算机存储负数的原则:按位取反再加一。如:
正100,01100100,
负100,10011011+1 ---> 10011100
存放双字节数据,右边补齐0,从高地址开始存。
s = 200;
string str = Convert.ToString(s,2);
Console.WriteLine(str);
值类型没有实例,实例与变量合而为一。
不用写成 int x = new int();
引用类型在内存中的存贮
一旦声明一个引用类型,就直接在内存中刷出4个字节,不用计算所需空间,放在栈中。
声明一个实例类型后,才需要在内存中计算所需空间。实例存放在堆内存中。
变量的默认值
局部变量默认值全刷成0.
本地变量没有默认值,必须要赋值,否则无法编译成功。
常量 Const
常量的值不可以被改变。
const int x = 100;
x = 200; // 报错,因为x是常量,值不可以变
装箱和拆箱
int x = 100;
object obj; //引用类型obj
obj = x;