.net装箱和拆箱

2024-05-13 14:38
文章标签 net 装箱 拆箱

本文主要是介绍.net装箱和拆箱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//装箱:值类型→引用类型
            //拆箱:引用类型→值类型
            //装箱拆箱转化,n在意义上本身就是属于object类型的,只是在o对应的对内存中复制了一个n存进去,这种转化叫装箱
            int n = 10;
            object o = n;
            int m = (int)o;

            //不属于装箱拆箱的转化,tring与int在内存存在形式上是不同的,这种虽然也是把值类型转化为引用类型,但是,这种方式是先在堆内存上开辟一个空间,然后存储一个string型的”10”,然后再把地址给str,这种不叫装箱
            int i = 20;
            string str = Convert.ToString(i);
            int y = int.Parse(str);

            //3、装箱和拆箱:必须是在内存方面存在的形式相同的转化才叫拆装箱,也就是子父类之间的转换,装的时候是什么类型装的箱,拆的时候也必须是同样的类型接受,否则会错
            //int q = 30;
            //object oo = q;
            //double d = (double)oo;
          
            //int实现了IComParable接口,所以也是装箱拆箱
            int x = 100;
            IComparable ic = x;
            int w = (int)ic;
            char ch = 's';
            string ch2 = "w";
            int n1 = 10;
            double d2 = 19;
            string r = string.Concat(ch, ch2, n1, d2);
            Console.WriteLine(r);

            #region 频繁发生拆箱和装箱和消耗时间、资源
            
            ArrayList arr = new ArrayList();
            Stopwatch sw = new Stopwatch();
            sw.Start();00:00:01.7436891时间
            for (int ii = 0; ii < 10000000; ii++)
            {
                arr.Add(ii);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);

            sw.Restart();
            sw.Start();
            //时间00:00:00.4028327
            List<int> list = new List<int>();
            for (int ii = 0; ii < 10000000; ii++)
            {
                list.Add(ii);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
            #endregion   
            
            Console.ReadKey();

这篇关于.net装箱和拆箱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985985

相关文章

Windows中,.net framework 3.5安装

安装.net framework,目前已知2种方法,如下: 一、在MSDN下载对应的安装包,安装,这种可能无法安装成功,概率很大,不成功使用第二种方法,基本上没问题。 二、win8/8.1/10 下安装 .net framework 3.5.1: 1. 打开 win8/8.1/10 安装盘(这里指系统安装镜像文件),提取 sources\sxs 文件夹到 X:\sources\sxs (X代

ASP.Net.WebAPI和工具PostMan

1.WebAPI概述 1.1 WebAPI WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性,可以处理各种HTTP请求,并支持各种数据格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(ActionMethods)的概念、通过路由配置将请求映射到相应的方法上。 开发人员可以使用各种属性和过滤器来处

【ASP.NET】 No 'Access-Control-Allow-Origin' header is present on the requested resource.

前端JS用XMLHttpRequest,请求后端数据。出现了No ‘Access-Control-Allow-Origin’ header is present on the requested resource. 我是使用的ASP.NET框架。 解决办法: 在Web.config文件相应地方添加: <?xml version="1.0" encoding="utf-8"?><confi

vue dist文件打开index.html报Failed to load resource: net::ERR_FILE_NOT_FOUND

本地正常。打包好的dist文件打开index.html报Failed to load resource: net::ERR_FILE_NOT_FOUND 解决办法: 在webpack.prod.conf.js 中output添加参数publicPath:’./’ 在webpack.base.conf.js里 publicPath: process.env.NODE_ENV === ‘pro

导入别人的net文件报红问题sdk

1. 使用cmd命令 dotnet --info 查看自己使用的SDK版本 2.直接找到项目中的 global.json 文件,右键打开,直接修改版本为本机的SDK版本,就可以用了

java中自动装箱的变态小题目

Integer i1 = 100; Integer i2 =100; boolean b1 = i1== i2;//结果为true   Integer i3 =200; Integer i4 =200; boolean b2 = i3 == i4;//结果为false 完整代码:(编译器二次加工) package cn.jdk.integer;public class Inte

.net 面试题总结(工作经验2年半)

一、Ajax调用的时候,get、post有什么区别? 答:get和post都是向服务器发送一种请求,只是发送机制不同     1 GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。     2.首先是”GET方式提交的数据最多只能是1024字节”,Post传输的数据量大,可以达到2M。     3.get方式请求数据会被浏览器缓存起来,因此其

.Net Core 学习

1、.Net Core 环境搭建 安装.NET Core:     .NET Core 包括.NET Core Runtime 和 .NET Core SDK: NET Core = 应用运行依赖的 .NET Core RuntimeNET Core SDK = 使用.NET Core开发应用.NET Core Runtime 和 SDK+CLI(Software Developmen

ADO.NET 学习汇总

一、ADO.NET 概要 ADO.NET  是 .NET 框架中的重要组件,主要用于完成C# 应用程序访问数据库。   说明: Connection:连接  ,  Transaction :事务   , Parameters : 参数 Command : 命令  ,SelectCommand 查询命令,InsertCommand 插入命令,UpdateCommand 更新命令

.net平台下深拷贝和浅拷贝(实现ICloneable接口的基础上)

在.net类库中,对象克隆广泛存在于各种类型的实现中,凡是实现了ICloneable接口的类型都具备克隆其对象实例的能力。所以本文讲述的深拷贝和浅拷贝也是在实现ICloneable接口的基础上进行的。 基本概念: 浅拷贝:指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝对象和原对象仅仅是引用名称有所不同,但是它们共用一份实体。对任何一个对象的改变,都会影响到另外一个对象。大部分的引用类型,