C# 装箱和拆箱

C#的值类型可以分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型。

1、那么值类型和引用类型能否相互转换呢?

答案是肯定的,C#通过装箱和拆箱来实现两者的相互转换。

(1)、装箱   ---把值类型强制转换成引用类型(object类型)

(2)、拆箱   ---把引用类型强制转换成值类型,这个过程也称之为"强制转换"

注:拆箱只能对以前装箱的变量进行拆箱,代码如下:

  static void Main(string[] args)
        {
            string num = "666";
            object obj = num;
            int unboxnum = (int)num;
            Console.WriteLine(unboxnum);
        }

在拆箱的过程中,确保得到的值有足够的空间得到拆箱中的值中的所有的字节,代码如下:

long num = 666666666666666666;
            object obj = num;
            checked
            {
                int unboxnum = (int)obj;
                Console.WriteLine(unboxnum);
            }

拆箱后的值无法接收long的值,所以报了InvalidCastException异常。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法修养

PAT 1040

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)...

35470
来自专栏算法修养

CodeForces 666A Reberland Linguistics(DP)

A. Reberland Linguistics time limit per test 1 second memory limit per test ...

41650
来自专栏calmound

UVA Hangman Judge

英语太烂啊。 In ``Hangman Judge,'' you are to write a program that judges a series of ...

34370
来自专栏深度学习与计算机视觉

算法-调整数组顺组使奇数位于偶数前面

题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,偶数位于数组的后半部分。 解题思路: 比如我们有一个这样...

21370
来自专栏Coding迪斯尼

java开发编译器:把C语言的循环指令编译成java字节码

20930
来自专栏技术博客

C#基础知识系列九(对IEnumerable和IEnumerator接口的糊涂认识)

   IEnumerable、IEnumerator到现在为止对这两个接口还是不太理解,不理解但是自己总是想着试着要搞明白,毕竟自己用的少,所以在此先记录一下。...

13420
来自专栏技术博客

C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)

  这两天在网上看到的总结很多,尤其是博客园中的,很多很多,也给了我很多的启发,当然自己也总结过,而且有很多人也给与我一些意见和看法。不管怎样,自己还是先把所谓...

13120
来自专栏有趣的django

第二章、深入类和对象

23400
来自专栏算法修养

HDU 3333 Turing Tree (线段树)

Turing Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768...

35280
来自专栏GreenLeaves

C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能

1、IEnumerator和IEnumerable的作用 其实IEnumerator和IEnumerable的作用很简单,就是让除数组和集合之外的类型也能支持f...

220100

扫码关注云+社区

领取腾讯云代金券