一.装箱和拆箱

  将值类型转换为引用类型的过程称为装箱,反之称为拆箱

                        

        

  实际开发尽量避免 装/拆 箱

    原因:

      装/拆 箱都会降低程序性能

  示例代码:

    

       static void Main(string[] args)
        {

            ;
            object obj = num;  //有装箱操作
            int result = (int)obj; //拆箱操作
            //要想拆箱,先有装箱。
        }   

二.不同类型的参数传递

  1.值方式参数传递

    1)使用值类型作为参数

      以值类型作为参数进行值方式传递参数时,不能改变值类型参数的值

        ;
         ;
         Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
         //最简单的两个变量交换
         //借助第三方
         Change(num1, num2);
         Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
     static void Change( int num1, int num2)
        {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }        

    2)使用引用类型作为参数

      以引用类型作为参数进行值方式传递参数时,能改变引用类型参数的值

    static void Main(string[] args)
        {
          Voter voter = new Voter();
            SE se = new SE();
            se.popularity = ;

            voter.Vote(se);

            voter.Vote(se);

            Console.WriteLine(se.popularity);

        }

      public void Vote(SE se)
        {
            se.popularity++;
        }

 public class SE
    {
        public int popularity;
    }        

  2.引用方式参数传递(ref)

    1.使用引用类型作为参数

      以值类型作为参数进行引用方式传递参数时,能改变值类型参数的值

 ;
         ;
         Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
         //最简单的两个变量交换
         //借助第三方
         Changeref num1,ref num2);
         Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
     static void Change(ref int num1,ref int num2)
        {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }        

    2.使用引用类型作为参数

      以值引用型作为参数进行引用方式传递参数时,能改变引用类型参数的值

 static void Main(string[] args)
        {
          Voter voter = new Voter();
            SE se = new SE();
            se.popularity = ;

            voter.Vote(ref se);

            voter.Vote(ref se);

            Console.WriteLine(se.popularity);

        }

      public void Vote(ref SE se)
        {
            se.popularity++;
        }

 public class SE
    {
        public int popularity;
    }        

深入.NET数据类型(2)的更多相关文章

  1. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  2. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

  3. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  4. UniqueIdentifier 数据类型 和 GUID 生成函数

    UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...

  5. SQL Server常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...

  6. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  7. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  8. SQL数据类型

    1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符.   varchar ...

  9. 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型

    运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...

  10. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. php代码在服务器中查看接值

    error_log("You messed up!", 3, "/var/tmp/my-errors.log");

  2. Java学习之计算机基础(二)

    今天主要介绍原码.反码与补码的知识.了解原码.反码与补码的知识,可以帮助我们更好地理解在计算机内部是如何进行运算的,同时对于后面更好地学习和理解Java基本数据类型及其范围打下基础. 背景知识: 在计 ...

  3. 高效管理http连接

    1.Http连接基础 Http协议承载了互联网上的主要流量,然而说到传输,还要回归到最基本的网络分层模型TCP/IP.TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交互网络分层协议集.客户 ...

  4. Python笔记·第六章——集合 (set) 的增删改查及 copy()方法

    简介: 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合,就自动去重了. ...

  5. Android开发之漫漫长途 Ⅷ——Android Binder(也许是最容易理解的)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  6. iOS 获取导航栏和状态栏的高度

    CGRect rect = [[UIApplication sharedApplication] statusBarFrame]; 状态栏的高度: float status height =  rec ...

  7. 巧用CAS解决数据一致性问题

    缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法. 一.业务场景 业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下: ( ...

  8. vue的组件和生命周期

    Vue里组件的通信 通信:传参.控制.数据共享(A操控B做一个事件) 模式:父子组件间.非父子组件 父组件可以将一条数据传递给子组件,这条数据可以是动态的,父组件的数据更改的时候,子组件接收的也会变化 ...

  9. linux 磁盘管理三部曲——(1)磁盘结构,认识分区

    最近小编整理了磁盘管理的相关知识,发现还是挺多的,所有就分了三个部分来给大家分享一下: 1.磁盘结构,认识分区 2.管理分区,文件系统格式化 3.mount挂载,/etc/fstab配置文件 这篇就先 ...

  10. HBase:Shell

    HBase shell commands As told in HBase introduction, HBase provides Extensible jruby-based (JIRB) she ...