值类型与引用类型关系
来源:互联网 发布:超声波测身高软件 编辑:程序博客网 时间:2024/06/16 19:27
引用类型包括:类(class)、接口(interface)、数组(array)、委托(delegate)、object和string。其中草药object和string是两个比较特殊的类型。string类型是一个从object类直接继承的密封类型,不能再被继承,其实例表示Unicode字符串。
可以把值类型与引用类型的值赋给object类型变量,因为object是C#中所有类型(包括所有的值类型与引用类型)根类。C#用“装箱”与“拆箱”来实现值类型与引用类型之间的转换。
装箱 就是装值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这相对象实例,最后由object对象引用这个对象实例。
例如:
using System;
class Demo
{
public static void Main()
{
int x=123;
object obj1=x; //装箱操作,装值类型x赋给object类型的obj1变量
x=x+100; //改变x的值,此时obj1的值不会随之改变
Console.WriteLine("x={0}",x); //x=223
Console.WriteLine("object={0}",obj1); //obj1=123
}
}
拆箱操作与装箱操作相反,它是将一个object类型转换成值类型。首先检查由object引用的对象实例类型的包装值,然后包实例中的值拷贝到值类型的变量中。
例如:
using System;
class Demo
{
public static void Main()
{
int x=123, y;
object obj1=x; //装箱操作,装值类型x赋给object类型的obj1变量
x=x+100; //改变x的值,此时obj1的值不会随之改变
y=(int)obj1; //拆箱操作,必须进行强制类型转换
Console.WriteLine("x={0}",x); //x=223
Console.WriteLine("object={0}",obj1); //obj1=123
}
}
注意:当一个装箱操作把值类型转换成一个引用类型时,不需要显式地强制类型转换;而拆箱操作把引用类型转换到值类型时,由于它可以强制转换到任何可以相容的值类型,所以必须显式地强制类型转换。
- 值类型与引用类型关系
- 引用类型与值类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- 值类型与引用类型
- php过时
- So tired
- 开始→运行→命令集锦
- 简易C++ Dll
- 些些想法些些承诺
- 值类型与引用类型关系
- 用户体验图书馆
- 数据库设计理论及应用
- winpcap中的过滤串表达式问题
- 让下拉框具有类似readonly功能,以及增加表行的代码
- 关于jspsmartupload中文名文件上传后为乱码的问题
- 带按钮可左右滚动的图片展示特效
- Mysql的sql语句中使用判断语句遇到的问题
- 系统构架设计应考虑的因素收藏