深入.NET平台和C#编程_深入C#数据类型

 深入C#数据类型
一.值类型和引用类型
    1.概述
    (1).值类型
        源于System.ValueType家族,主要包括基本数据类型和枚举类型
                int heightZhang = 170;//张浩的身高
                int heightLi = heightZhang;//赋值操作
                Console.WriteLine("去年--张浩的身高是:" + heightZhang + ",李明的身高是:" + heightLi);
                heightLi = 180;//今年李明德身高变为180
                Console.WriteLine("今年--张浩的身高是:" + heightZhang + ",李明的身高是:" + heightLi);
    小结:对值类型,不同的变量会分配不同的存储空间,并且存储空间中存储的是该变量的值。赋值操作传递的是变量的值,改变一个
变量的值不会引用另一个变量的值。
    (2).引用类型
        源于System.Object家族,主要包括数组,类和接口
                int[] infoZhang = new int[] { 170,60 };//张浩的身高和体重信息
                int[] infoLi = infoZhang;//数组引用赋值
                Console.WriteLine("去年--张浩的身高是:" + infoZhang[0] +"体重是:"+infoZhang[1]+ ",李明的身高是:" + infoLi[0]+"体重是:"+infoLi[1]);
                infoLi[0] = 180;//今年李明的身高变为180
                infoLi[1] = 70;//今年李明的体重变为70
                Console.WriteLine("去年--张浩的身高是:" + infoZhang[0] + "体重是:" + infoZhang[1] + ",李明的身高是:" + infoLi[0] + "体重是:" + infoLi[1]);
    小结:对引用类型,赋值是把对原对象的引用传递给另一个引用。对数组而言,当一个数组引用赋值给另一个数组引用后,这两个
引用指向同一个数组,也就是指向同一块存储空间。
                int[] infoZhang = new int[] { 170,60 };
                int [] infoLi=new int[2];
                Console.WriteLine("复制前--李明的身高是:"+infoLi[0]+"体重是:"+infoLi[1]);
                //数组赋值
                for (int i = 0; i < infoZhang.Length;i++ )
                {
                    infoLi[i] = infoZhang[i];
                }
                Console.WriteLine("去年--张浩的身高是:" + infoZhang[0] + "体重是:" + infoZhang[1] + ",李明的身高是:" + infoLi[0] + "体重是:" + infoLi[1]);
                infoLi[0] = 180;//今年李明的身高变为180
                infoLi[1] = 70;//今年李明的体重变为70
                Console.WriteLine("今年--张浩的身高是:" + infoZhang[0] + "体重是:" + infoZhang[1] + ",李明的身高是:" + infoLi[0] + "体重是:" + infoLi[1]);
    (3).细分值类型和引用类型
        值类型:基本数据类型(整形:int;长整形:long;浮点型:float;双精度型:double;字符型:char;布尔型:bool),
枚举类型(枚举:enum),结构类型(结构:struct)
        引用类型:类(基类:System.Object;字符串:string;自定义类:class),接口(interface),数组(int[];string[])
    2.结构
    (1).结构的定义
        语法:
        访问修饰符 struct 结构名
        {
            //结构体
        }
    (2).结构的使用
        注意:可以不用new,直接定义结构的对象即可;
            声明结构的对象后,必须给结构的成员赋初值
    (3).结构的使用经验
        当对象需要较少的字段来表示时,就可以选用结构来实现
    3.装箱和拆箱
    装箱:
                int i = 123;
                object o = i;//装箱
                i = 456;//改变i的内容
                Console.WriteLine("值类型的值为{0}",i);
                Console.WriteLine("引用类型的值为{0}", o);
    拆箱:
                int i = 123;
                object o = i;//装箱
                int j = (int)o;//拆箱
                Console.WriteLine("值类型的值为{0}", i+"\t"+j);
                Console.WriteLine("引用类型的值为{0}", o);
        将值类型转换为引用类型的过程称为装箱,反之称为拆箱
    经验:在实际的开发中,应该尽量减少不必要的装箱和拆箱,因为二者的存储方式不同,转换时性能损失较大。
二.不同类型的参数传递
    1.概述
    使用值传递,在方法中对参数值的更改在调用后不能保留;
    使用ref方式传递,可以保留对参数值的更改。
    2.值方式参数传递
    (1).使用引用类型作为参数
    (2).使用值类型作为参数
    3.引用方式参数传递
    (1).使用引用类型作为参数
    (2).使用值类型作为参数

           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值