面向对象编程中,封箱指把非对象类型的数值或数据,包装成对象类型反之,拆箱指把对象类型拆成非对象的数值或数据。

例子:定义一个Circle 类

   class Circle
{
double radius;
public Circle(double param)
{
radius = param;
} public double Area()
{
return Math.PI * radius * radius;//圆的面积
}
}
     static void Main(string[] args)
{
Circle c = new Circle();
Console.WriteLine(c.Area()); int i = ;
Object o = i;//装箱操作,将整形变量i赋值给object类型 o
Console.WriteLine(o.ToString());
int j = (int)o;//拆箱操作,将Object类型变量o,拆箱赋给整形变量j;
Console.WriteLine(j);
}

安全的数据类型转换方法:

is运算符,判断变量是否为指定数据类型。

             o = c;
if (o is int)
{
int k = (int)o;
}
else if (o is Circle)
{
Circle c2 = (Circle)o;
Console.WriteLine(c2.Area());
}

as运算符。as 运算符类似于强制转换操作。但是,如果无法进行转换,则 as 返回 null

  int? k = o as int?; //int类型无法存储Null型;
if (k != null)
{
Console.WriteLine(k);//说明转换成功,打印k的值。
}
else
{
Circle c2 = o as Circle;
if (c2 != null)
{
Console.WriteLine(c2.Area());
Console.ReadKey();
}
}

C#装箱和拆箱(值类型和引用类型之间的转换)的更多相关文章

  1. 对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象

      包的声明与定义 需要注意的是,包的声明只能位于Java源文件的第一行. 在实际程序开发过程中,定义的类都是含有包名的: 如果没有显式地声明package语句,创建的类则处于默认包下: 在实际开发中 ...

  2. C# 知识回顾 - 装箱与拆箱

    装箱与拆箱 目录 生活中的装箱与拆箱 C# 的装箱与拆箱 值类型和引用类型 装箱 拆箱 生活中的装箱与拆箱    我们习惯了在网上购物,这次你想买本编程书 -- <C 语言从入门到放弃> ...

  3. [C#] C# 知识回顾 - 装箱与拆箱

    装箱与拆箱 目录 生活中的装箱与拆箱 C# 的装箱与拆箱 值类型和引用类型 装箱 拆箱 读者见解 生活中的装箱与拆箱    我们习惯了在网上购物,这次你想买本编程书 -- <C 语言从入门到放弃 ...

  4. Java学习笔记之——自动装箱与拆箱

    自动装箱与拆箱 基本类型与引用类型的互相转换 1. 基本类型对应的包装类 byte    short       char      int       long    flaot    double ...

  5. [C#] 类型学习笔记一:CLR中的类型,装箱和拆箱

    在学习.NET的时候,因为一些疑问,让我打算把.NET的类型篇做一个总结.总结以三篇博文的形式呈现. 这篇博文,作为三篇博文的第一篇,主要探讨了.NET Framework中的基本类型,以及这些类型一 ...

  6. C#之装箱与拆箱

    C#中值类型和和引用类型实质上是同源的,所以不但可以从值类型和引用类型之间进行转换,也可以在值类型和引用类型之间进行转换.,但是两者使用的内存类型不同,使他们的转换变得复杂. 1.装箱: 在C#中通常 ...

  7. C# 托管与非托管类型 堆和栈 值类型与引用类型 装箱与拆箱

    一.托管类型与非托管类型 1.托管类型 托管类型包括 引用类型 以及 包含有引用类型或托管类型成员的结构. 引用类型 含引用类型或托管类型成员(字段.自动实现 get 访问器的属性)的结构 // 托管 ...

  8. C#装箱和拆箱

    1.装箱是将值类型转换为引用类型(或者转换为此值类型所实现的任何接口类型)的隐式转换,当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上. ; / ...

  9. C#之装箱和拆箱

    在实际编码过程中,有时候会出现装箱和拆箱操作.下面就类分别认识一下: 需要注意的是,类型转换和这个是不同的.Convert方法并没有发生装箱和拆箱操作,而是类型转换,包括int.parse等等. 装箱 ...

随机推荐

  1. 自己保留:data provider

    <system.data>    <DbProviderFactories >      <add name="MySQL Data Provider" ...

  2. 11.C#迭代器(六章6.1)

    今天我们说下C#中的迭代器,首先引出一些关于迭代的概念,后面举出代码供大家讨论. 迭代器模式是行为模式的一种范例,行为模式是一种简化对象之间通信的一种设计模式.在.NET中使用IEnumerator和 ...

  3. Linq之延迟加载特性

    目录 写在前面 系列文章 延迟加载 总结 写在前面 上篇文章介绍了linq中常见的几个关键字,并列举了几个例子,算是对linq如何使用有了初步了解.上篇文章中也提到了,能够使用linq的场合有一个要求 ...

  4. Java设计模式-状态模式(State)

    核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线.隐身.忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1.可以通过改变状 ...

  5. 【BZOJ-1797】Mincut 最小割 最大流 + Tarjan + 缩点

    1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1685  Solved: 724[Submit] ...

  6. 云,git,blog,感想

    最近由于工作的原因,又看了一下git的资料,这次看收获不小,因为之前已经用了一段时间的git了.主要收获就是除了工作,自己平时在练习时使用git也会事半功倍,怎么说呢,没有git之前,相信很多自学的人 ...

  7. BZOJ1588 HNOI2002 营业额统计 [Splay入门题]

    [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4128  Solved: 1305 Description 营业额统计 ...

  8. Aho-Corasick算法、多模正则匹配、Snort入门学习

    希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...

  9. HDU 2255 奔小康发大财

    传送门 Solution: KM算法 关于KM算法有一篇极好的文档http://www.cse.ust.hk/~golin/COMP572/Notes/Matching.pdf Implementat ...

  10. repo 无法连接gerrit.googlesource.com 下载工具

    万恶的墙下,我们可以用其他的url来下载代码. 屏蔽掉repo里面的 #REPO_URL = 'https://gerrit.googlesource.com/git-repo' 在你的下载连接后添加 ...