- Jquery中slideDown()用法详解
- 网站标题,关键词和描述的写作标准
- URL标准化是什么意思?
- C# 的注释
- 把DataRow[]的数据转成DataTable,DataRow复制到新DataTable
- C#中\t和\n分别是什么意思?
- .net session过期 原理及解决办法
- PHP中=>和->有什么区别?
- SEO三级关键词理论
- C#中释放数据库连接资源
邮箱:
手机:15383239821
C#中装箱 开箱什么意思
C# 中的数据类型都是从 System.Object 类中派生出来的,而且利用了"装箱"和"开箱"的技术。
"装箱"和"开箱"的意思很简单,请看示例:
int myint = 5;///值类型
object har = myint; //myint 装箱到 har
在上面代码的第一行,我们创建了int类型的变量 myint. int 类型是一种数值类型(因为它是一种基本类型).在第二行,编译器看到变量 myint 被复制到一个叫做 har的引用类型变量.这时编译器就生成将这个值装箱所需的MSIL代码.
现在,要将 har转换为数值类型,就可以执行一个显式转换:
int myint = 5;//值类型
object har = myint;//装箱
int myint2 = (int) har;//开箱
装箱与开箱
难道C#也是两种不同的数据类型吗?不是。那它是怎么实现类型兼容的呢?那就是“装箱”(boxing)来实现的。最简单的理解就是:装箱就是将数值类型转换为引用类型。相对应的就是引用类型通过“开箱”转换为数值类型。
这项技术之所以如此“伟大”,是因为一个对象在它需要是一个对象的时候,它就仅仅是一个对象。比如:如果您声明了一个System.int32类型的数值类型变量。您可以把它作为参数传递给任何方法,如果该方法的参数类型定义为System.Object,系统会自动执行装箱操作,将它转变成一个Object。对于程序员来说,它和普通的数据类型一样,但可以当作对象来操作。但事实上它只是堆栈上的4个字节而已。如:
int temp = 58; //数值类型
System.Object bar = temp; //temp 被执行装箱操作转变成 对象类型 bar 这是编译器就生成该值装箱所需的MSIL代码。
现在,要把bar转换为数值类型,就可以执行一个显示转换。
int temp = 58;
System.Object bar = temp;
int temp2 = (int)bar;
注意:装箱就是将数值类型转换成引用类型。
开箱就是将引用类型转换成数值类型。(需指明被转换的类型,因为它可以被转换成任何类型)
-
2010-12-09如何向百度和谷歌提交网站地图Sitemap?
-
2025-12-09[Required(ErrorMessage = "{0}不可为空")]
-
2014-06-13asp.net 文件管理
-
2010-07-20优化整站和优化单个关键词的区别
-
2010-07-20URLRewriter实现方法
-
2023-03-11C# 的注释
