• C#值类型、引用类型(1)


    值类型:byte short/char int long float double decimal bool enum

    特点:在进行赋值的时候传的是数值,修改其中任意一个数据变量时,另一个不会受到影响。

    例如:

    int a=12;
    int b=a;
    b++;
    Console.WrithLine("${a} {b}");
    //a=12,b=13

    引用类型:string object array

    特点:在赋值过程中,传递的是地址

    int[] arr={1,2,3,4,5};
    int[] arr2=arr;
    arr[0]=22;
    Console.WriteLine("${arr[0]} {arr2[0]}");
    //输出 arr[0]=22,arr[2]=22

    值类型:可以这么理解:A,B变量分别是两个不同的空间。给定A变量赋值为 2 ,给定B变量也赋值为 2。现在,修改A变量值为 3,B变量不会发生改变,也就是说B变量开辟的空间不受A变量影响,各司其职。。。

     引用类型:拿数组举例,A为数组开辟了一个空间,1,2,3分别是数组元素。

    这时候B指向数组A,不管是数组还是对象,都需要通过关键字new再去开辟另一个空间,但是,这里B指向了数组A,此时当数组A里面的元素发生改变时,B必然也会发生改变,因为此时B并没有单独开辟空间,它还是指向了数组A。。。

    万物都有它的源头。。。在程序中也适用。。。也就是里氏替换原则。

    里氏替换原则:父类型变量可以装子类型的对象。

    那就是 Object,可以说是他们的“祖宗”

    object obj=1;//整型
    obj="abc";//字符串
    obj=new int[]{1,2,3};//数组

    以上操作可以称为封装操作。

    封装操作:把值类型转换成引用类型,装箱操作。虽然这个包箱是引用类型,但是箱子里面的值依然是值类型。但是一旦进行了装箱操作,就无法直接使用里面的值。

    打个比方理解:比如说出去买啤酒,但是这瓶啤酒外面包了一层箱子,显然是无法直接喝的。需要把这个箱子拆开,把里面的酒拿出来。也就是说我们需要进行拆箱操作。

    拆箱操作:把引用类型装换为值类型,拆箱操作。实际上在装箱时底层调用了一个inbox方法,拆箱时,调用unbox方法。

    例如:

    int a=(int) obj;

    这时就被拆掉了。

  • 相关阅读:
    40种网页常用小技巧(javascript)
    伸缩效果
    震动的超链
    一个模仿图片透明渐变做的表格颜色渐变效果
    荧 光 效 果
    用LoadRunner编写socket应用的测试脚本
    突发奇想写的一篇小科幻(如果可以叫做科幻的话)
    《软件性能测试过程详解与案例剖析》一书在Chinapub上8月份的销售排名持续上升
    建立高效的测试团队
    探索性测试(Exploratory Testing)概述
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/12774417.html
Copyright © 2020-2023  润新知