C#装箱和拆箱操作实例分析
本文实例讲述了C#装箱和拆箱操作。分享给大家供大家参考,具体如下:
1. C#中的装箱
C#中的装箱就是把一个值类型隐式地转换为object类型,转换过程中采用的是值的拷贝而不是引用,这从下面的例子可以看出:
using System; public class Test { public static void Main(String[] args) { int i = 10; //将值类型的i装箱 //需要注意的是:这里的装箱采用的是值的拷贝 object obj = i; //检验是否装箱成功了 if(obj is int) { Console.WriteLine("数据已经装箱!"); } //我们在这里更改i的值 i = 33; Console.WriteLine("int i现在的值是:{0}",i); Console.WriteLine("int i装箱的值是:{0}",obj); } }
2. C#中的拆箱
C#中的拆箱就是把一个对象类型显式地转换为值类型,注意:要转换的类型必须和值类型是兼容的。举例如下:
int i = 10; object obj = i; int j = (int)obj;
在这里需要注意的是:
装箱和拆箱是非常影响程序性能的,在代码中应避免装箱和拆箱的操作。可以使用泛型来减少这样的操作。
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
相关推荐
-
轻松学习C#的装箱与拆箱
首先看一看什么是装箱和拆箱? 简单的来说: 装箱就是值类型转换为引用类型: 拆箱就是引用类型转换为值类型. 值类型,包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.Char.Float.Double.Bool.Decimal).枚举 (enum) .结构 (struct). 引用类型包括类.数组.接口.委托.字符串等. 装箱:值类型到引用类型或到此值类型所实现的任何接口类型的
-
C# 装箱和拆箱的知识回顾
装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的一个过程. 当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上. 拆箱将从对象中提取值类型. 装箱是隐式的:拆箱是显式的. 装箱和拆箱的概念是类型系统 C# 统一视图的基础,其中任一类型的值都被视为一个对象. 在下面的示例中,将整型变量 i 进行了装箱并分配给对象 obj. static void Main(string[] args) { var i = 123; //
-
再议C#中的装箱与拆箱的问题详解
上一篇写了一下装箱拆箱的定义和IL分析,这一篇我们看下使用泛型和不使用泛型引发装箱拆箱的情况1.使用非泛型集合时引发的装箱和拆箱操作 看下面的一段代码: 复制代码 代码如下: var array = new ArrayList();array.Add(1);array.Add(2); foreach (int value in array){Console.WriteLine("value is {0}",value);} 代码声明了一个ArrayList对象,向ArrayList中添
-
解析C#中的装箱与拆箱的详解
装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作. 1. 装箱在值类型向引用类型转换时发生2. 拆箱在引用类型向值类型转换时发生光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了.我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码 复制代码 代码如下: object obj = 1; 这行语句将整型常量1赋给object类型的变量obj: 众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上:要把值类型放在堆上就需要执行一次装箱操作.这行
-
C#实现装箱与拆箱操作简单实例
本文以一个简单实例讲述了C#装箱和拆箱操作的实现方法,简单来说装箱是将值类型转换为引用类型:拆箱是将引用类型转换为值类型,是涉及栈和堆的使用方面的东西,学过C#的人应该都知道,所以这里就不哆嗦了,本例代码也是面向C#新手的,非常简单. 具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace UnBoxing { class Program {
-
c#装箱和拆箱知识整理
1.装箱和拆箱是一个抽象的概念 2.装箱是将值类型转换为引用类型 : 拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: 复制代码 代码如下: int val = 100; object obj = val; Console.WriteLine ("对象的值 = {0}", obj); 这是一个装箱的过程,是将值类型转换为引用类型的过程 复制代码 代码如下: int val = 100; obj
-
C#装箱和拆箱原理详解
.NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种传递参数和赋值的通用方法.赋给object的值必须作为引用类型,并存放砸托管堆中. 装箱: int age = 24; object refAge= age; 可以看的出,第一条语句创建一个变量age,并将值放在托管栈中: 第二条语句将age的值赋给引用类型.它将值24放在托管堆中. 这个值类型包装为引用类型的过程,称为装箱. 拆箱: 相反,将引用类型转换为
-
C#装箱和拆箱操作实例分析
本文实例讲述了C#装箱和拆箱操作.分享给大家供大家参考,具体如下: 1. C#中的装箱 C#中的装箱就是把一个值类型隐式地转换为object类型,转换过程中采用的是值的拷贝而不是引用,这从下面的例子可以看出: using System; public class Test { public static void Main(String[] args) { int i = 10; //将值类型的i装箱 //需要注意的是:这里的装箱采用的是值的拷贝 object obj = i; //检验是否装箱
-
C#装箱与拆箱操作的深入讲解
疑问 都知道C#有装箱和拆箱的操作,听闻也都是讲int类型转换成object类型就是装箱,将object类型再转回int类型就是拆箱. 描述的通俗点: 装箱 将值类型转换成引用类型, 拆箱 将引用类型转换成值类型. 那看来是要先了解一下引用类型和值类型了. 引用类型和值类型 在C#中,所有称之为"类(class)"的类型,都是引用类型,而值类型都是标注为结构(struct)或者枚举(enum). 下面就来看一看引用类型和值类型,在实例化的时候发生了什么操作(首先自然是申明一下两种类型了
-
深入理解C# 装箱和拆箱(整理篇)
装箱(boxing)和拆箱(unboxing)是C#类型系统的核心概念.是不同于C与C++的新概念!,通过装箱和拆箱操作,能够在值类型和引用类型中架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换,装箱和拆箱能够统一考察系统,任何类型的值最终都可以按照对象进行处理. 装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作. 1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 //1. // 装箱和拆箱是一个抽象的概念 //2. // 装箱是将值类型转换为引
-
关于C#理解装箱与拆箱
目录 1.理解装箱 2.理解拆箱 3.生成的 IL 代码 4.实际应用 5.小结 1.理解装箱 简单地说,装箱就是将一个值类型的数据存储在一个引用类型的变量中. 假设你一个方法中创建了一个 int 类型的本地变量,你要将这个值类型表示为一个引用类型,那么就表示你对这个值进行了装箱操作,如下所示: static void SimpleBox() { int myInt = 25; // 装箱操作 object boxedInt = myInt; } 确切地说,装箱的过程就是将一个值类型分配给 Ob
-
C#装箱和拆箱的原理介绍
我们知道,值类型的变量是在堆栈上分配内存的,而引用类型包括System.Object的对象是在堆上分配内存的,基于这一特点,当值类型被类型转换时,会在堆栈和堆上进行一系列的操作,这就是装箱和拆箱的来源.充分理解装箱和拆箱,有助于程序员编写高效率的代码. 1.装箱和拆箱的基本概念 我们知道,所有的值类型都继承自System.ValueType,而System.ValueType继承自System.Object.所有的值类型对象都分配在堆栈上,而所有的引用类型包括System.Object对象都分配
-
基于数据类型转换(装箱与拆箱)与常量详解
隐式转换[自动类型转换]: 两种类型要兼容,原类型值域要小于目标类型值域,可以简单的理解为由小转大. public class Test { private void Start() { int a = 10; float b = a;//int 类型隐式转换为 float 类型 } } 显示转换[强制类型转换]: 两种类型要兼容,原类型值域要大于目标类型值域,可以简单的理解为由大转小. [缺点]:1.数据溢出.2.精度丢失. 数值类型之间的转换. public class Test { pri
-
C#中简单的拆箱操作用法实例分析
本文实例讲述了C#中简单的拆箱操作用法.分享给大家供大家参考.具体如下: C#中拆箱是允许将引用作为值类型的进行处理的过程.下面这段代码实现将object转换成int类型 using System; class ConversionSample { static void Main() { Object obj = 123; int num1 = (int)obj; Console.WriteLine(num1.ToString()); Console.WriteLine(obj.ToStrin
-
Java 装箱与拆箱详解及实例代码
Java 装箱与拆箱详解 前言: 要理解装箱和拆箱的概念,就要理解Java数据类型 装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.int包装成Integer.float包装成Float 拆箱:和装箱相反,将引用类型的对象简化成值类型的数据 Integer a = 100; 这是自动装箱 (编译器调用的是static Integer valueOf(int i)) int b = new Integer(100); 这是自动拆箱 看下面一段代码 m1 public class
随机推荐
- Backbone View 之间通信的三种方式
- 关于适配iOS11和iPhoneX的一些事
- asp.net中调用winrar实现压缩解压缩的代码
- 提升(web)权限终极9技巧
- 利用pt-heartbeat监控MySQL的复制延迟详解
- Mysql中存储UUID去除横线的方法
- jQuery实现浮动层随浏览器滚动条滚动的方法
- 自动复制U盘文件的VBS脚本
- asp.net+js实时奥运金牌榜代码第1/2页
- IE autocomplete internet explorer's autocomplete
- aspx 页面弹出窗口代码大全
- Android中自定义控件的declare-styleable属性重用方案
- Python 学习笔记
- Python中装饰器的一个妙用
- golang语言中for循环语句用法实例
- Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- Android studio 混淆+打包+验证是否成功
- 使用Node.js处理前端代码文件的编码问题
- 女人常说的32句谎言
- Nginx的一些基本功能极速入门