深入C#数据类型

一:值类型和引用类型

 1.值类型:

  值类型源于System.Value家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型

  所在的内存区域称之为栈(Stack),只要在代码中修改它,就会在内存区域保存这个值。

  (对于值类型,不同的变量会分配不同的存储空间,并且在存储空间中存储的是该变量的值。赋值操作

          传递的是变量的值,改变一个变量的值不会影响另一个变量的值)

 2.引用类型:

  引用类型源于System.Object家族,在C#中引用类型主要包括数组,类和接口等。

       如图:

  

    问题:有一个小程序,以知张浩和李明去年的身高都是170,体重为60,而今年李明张到了180和70,现在要输出俩

  人的身高体重。

      a.错误的思维方式及代码:

  

    运行结果

              我们发现张浩和李明的身高体重都发生了变化不符合要求

   b.正确的思路及代码:

   运行结果

图解原理

二:结构

  1.语法:

  访问修饰符   struct  结构名

             {

    //结构体

    }

      2.结构定义有以下特点

   a.结构中可以有字段也可以有方法

   b.定义时,结构的字段不能被赋值

  3.结构的调用注意事项

    a.在某些特定情况下可以不用new,直接定义结构对象即可(尽可能的去new)

    b.声明结构对象后,必须给结构体的成员赋初值

三:装箱和拆箱

  1.所谓装箱即是将值类型转换为引用类型,反之称作为拆箱

  示例代码:

       装箱:

  

  拆箱:

  

     2.注意事项:我们这里讲解装箱拆箱主要是让大家了解它的概念,但其实在实际开发之中我们应该减少装箱与

        拆箱的使用,因为二者的存储方式不同,转换的时候性能损失较大。

四:不同类型的参数传递

 1.值传递和引用传递  

  有没有ref,有ref的为引用传递,没有的为值传递

    2.ref字母能改变什么

          值传递:1 值类型(不会改变)  2 引用类型(会改变)

          引用传递:3 ref 值类型(会改变)4 ref 引用类型(会改变)

 

  

原文地址:https://www.cnblogs.com/yzwss/p/8158010.html