一.C#中的五大数据类型
在上篇文章中讲过类型所包含的事情,这一个标题讲一下具体的类型
类:
object和string本身就是类,因为过于常见,所以c#吸收他们成文关键子了.
二.什么是变量
变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量
变量一共有七种:
静态变量
public static int score;
非静态成员变量
public int Age;
数组(也是引用类型,但是加了下表的数组不是引用类型)
int[] arry = new int[100];
值参数:
public int Add(ref int a,int b);
引用参数变量:加了ref就是引用参数变量
public int Add(int a,int b);//其中的b就是值参数,即改变值参数不会影响原先的变量发生变化
输出参数变量:加了out就是输出参数变量
public int Add(out int a,int b);
局部变量:
public int Add(int a,int b)
{
int c = a+b;//其中c就是局部变量
}
三.值类型变量和引用类型变量
1.值类型变量
计算机的处理步骤就是:
byte b;
b=100;
1)首先声明了b,然后内存分给你一个编号(假设:1000001)
此时还没有分配具体的内存
2)根据定义的数据类型分配相应的内存
byte占一个字节所以就分配八个格子
2.引用类型的变量和实例
static void main()
{
Student stu;
stu = new Student();
}
class Student
{
uint x;
double y;
}
以上述代码为例子讲述计算机处理的步骤
1)首先分给stu一个首地址
2)判断你是引用类型时候就会给你分配一个空的存储其他地址的空间
3)当new student()出来以后就会在其他的地方分配uint+double的空间之和
4)将new 出来的地址存放到stu里面
四.其余的小知识点
1.局部变量是在Stack上分配内存
上面的例子stu也是局部变量,所以stu是分配在stack上面的
2. 变量的默认值
一些明显的要赋值的比如int没有默认值
3.常量(不可改变)
4.装箱和拆箱Boxing & UnBoxing
装箱
int x = 10;
//object引用类型
object obj = x;
1)先分配给obj一个内存,里面没有定西
2)计算机发现赋值的是一个x,就先赋值Stack的值到堆上,然后再将地址给obj ,实质上就是封装成object的一个类
拆箱
就是将obj里面的数据copy到定义好的变量中
注意:由上述操作可以看出装箱和拆箱都十分吃性能,因为从栈上搬到堆上