1.1C#语言基础-数据类型
C#中的数据类型根据其定义可以分为两种:值类型和引用类型。值类型直接存储数据,引用类型则是存储数据的引用,程序根据引用找到数据。
0x1值类型
用来存储数据值,主要包含整数、浮点数以及布尔等类型,存储在堆栈中,效率比较高,值存储的主要目的是为了提高性能。
- 值类型变量都存储在堆栈中
- 访问值类型变量是,一般都是直接访问其实列
- 每个值变量都有自己的数据的副本,因此对一个值类型变量的操作不会影响其他变量
- 复制值类型时,复制的是变量的值,而不是变量的地址
- 值类型不能为NULL,必须具有一个确定的值
整数类型
值类型都是从System.ValueType类继承而来的类型
sbyte 8位有符号整数 -128~127
short 16位有符号整数 -32768~32767
int 32位有符号整数
long 64位有符号整数
byte 8位无符号 整数 0~255
ushort 16位符号整数 0-65535
uint 32位无符号整数
ulong 64位无符号整数
当赋值的大小超过了类型规定的范围,可能出现运算溢出错误
浮点类型
//float:
float a=1.23f;
float b=2.34F;
//double:
double c=123d;
double d=11.22D;
小数默认是double类型,如果非要使用float类型,必须在末尾添加f或者F。
布尔类型
布尔类型的值:true/false,布尔类型的值只能是这俩,而且布尔类型的变量不能与其他类型进行转换
bool x=true;
0x2 引用类型
引用类型又称对象,存储实际数据的引用,C#中支持两种预定义引用类型: object 和string。
- object :c#中所有的类型都是直接或者间接继承Object
- string: 字符组成的序列
string 是引用类型,但是如果使用运算符(==和!=)表示比较对象的值。
引用类型的特征
- 必须在托管堆中为应用类型变量分配内存
- 必须使用new关键字来创建引用类型的变量
- 在托管堆中分配的每个对象都有与之关联的附加成员,这些成员必须被初始化
- 引用类型标本量是由垃圾回收机制来管理的
- 多个引用类型变量可以引用同一对象,并且操作会相互影响
- 在没有赋值之前是null
class C
{
public int v = 0;
}
static void Main(string[] args)
{
C c1 = new C();
C c2 = c1;
c2.v = 30;
Console.WriteLine("c1.v={0},c2.v={1}", c1.v, c2.v);
}