值类型:
值类型源于SystemValueTye家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称之为栈。知道在代码中修改它,就会在它的内存区域内保存这个值,值类型主要包括基本类型和枚举类型等。
static void Main (string [] args) { int heightZhang = 170; int heightLi=heightZhang; Console.WriteLine("去年:张浩身高"+heightZhang+",李明的身高是:”+heightLi); heightLi=180; Console.WriteLine("去年:张浩身高"+heightZhang+",李明的身高是:”+heightLi); }
程序结果为:
第一遍:170 170
第二遍:180 180
小结:对值类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值,赋值操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。
引用类型:引用类型源于System.Object家族,在C#中引用类型主要包括数组,类和接口等。
对引用类型,赋值是吧原对象的引用传递给另一个引用。对数组而言,当一个数组引用赋值给另一个数组引用后,这两个引用指向同一块存储空间。
数组复制可以利用循环实现。对于两个数组array1 和array2(array2的长度不小于array1的长度),将数组array1中的元素的值复制到array2中,可以采取以下形式:
for(int i = 0;i < array1.length; i++)
{
array2[i] = array1[i]; //将数组array1中元素的值复制到数组array2中
}
结构:
结构的定义:
语法:访问修饰符 struct 结构名
{
//结构体
}
特点:结构中可以有字段,也可以有方法
定义是,结构中的字段不能被赋初始值
结构使用时,可以不用new,直接定义结构的队形即可。
声明结构的对象后,必须给结构的成员赋初始值
因为每当声明结构变量时,就会存储一个结构的新副本,既系统要开辟一块新的存储空间,因此结构用的越多所消耗的存储空间也越多。
当对象需要用较少的字段来表示时,就可以选用结构来实现
使用之方法(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留。
使用值方法(不用ref修饰)传递引用类型参数时,参数咋方法中的修改会保留。
使用引用方法(用ref修饰)传递值类型或引用类型参数时,参数在方法中的修改都活保留。