• 深入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 引用类型(会改变)

  • 相关阅读:
    spark 学习笔记 sample 算子
    spark 学习笔记 dataframe注册生成表
    hbase 的hdfs目录解析
    ldap用户创建
    phpldap部署
    ldap部署
    zookeeper 无法启动 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: Unable to load database on disk java.io.EOFException
    数据采集flume kafka
    GraphQL教程(二) .net Core api 2.1
    GraphQL教程(一)。.net Core API2.1
  • 原文地址:https://www.cnblogs.com/java-123/p/8692638.html
Copyright © 2020-2023  润新知