一.装箱和拆箱

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

                        

        

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

    原因:

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

  示例代码:

    

       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. python学习之路day2

    模块学习: 标准库: os: 第三方库:

  2. linux apt-cache使用方法

    apt-cache是linux下的一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件.APT包管理的大多数信息查询功能都可以由apt-cache命令实现,通过apt-cache命令配合不同 ...

  3. eclipse导入新项目后,运行时找不到主类解决办法

    最近在学习多线程,今天下了一套源码,导入到eclipse里后,随便找了个带main()的类试了一下,找不到主类. 首先想到的解决办法是把工程clean一下,并没有用.去网上找了一个遍终于找到了管用的方 ...

  4. poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)

    题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...

  5. webpack+babel项目在IE下报Promise未定义错误引出的思考

    低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...

  6. 中国版Office 365 应用程序注册

    作者:陈希章 发表于 2017年3月23日 中国版Office 365是由世纪互联进行运营的一个云服务,单纯从技术角度来看的话,它基本保持了与国际版的同步.但是由于两个版本本质上是完全独立的,其中最关 ...

  7. 十一、Spring Boot 集成Shiro和CAS

    1.Shiro 是什么?怎么用? 2.Cas 是什么?怎么用? 3.最好有spring基础 首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程. 第二个流程是单纯使用Cas的流程. 第三个图 ...

  8. TableML-GUI篇(Excel编译/解析工具)

    项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com ...

  9. 青否云 - 小程序待办事项 wxapp开源系统

    青否云最新开源系统:小程序待办事项 wxapp-demo 青否云 小程序 demo 下载地址:https://github.com/qingful/wxapp-demo 官网 http://cloud ...

  10. myeclipse 2014 Customize Perspective 失效

    1.将9个jar复制到myeclipse安装目录\plugins中 2.删除和这9个jar同包名但是版本号较低的9个文件 3.重启myeclipse 2014 注:这9个 jar 包 自己到网上搜索, ...