加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的“Boxing”是什么意思(而不是Java)?

发布时间:2020-12-15 08:26:58 所属栏目:百科 来源:网络整理
导读:我正在从 Java背景学习C#,并对ValueTypes感到困惑.我从阅读MSDN的 C# vs Java概述中得到的理解是,原语是对象而不是包装器.如果是这样的话,为什么他们需要 boxed来调用方法呢?看起来他们的意思不同于Java的自动装箱,但我不确定是什么.它看起来更像是铸造. 解
我正在从 Java背景学习C#,并对ValueTypes感到困惑.我从阅读MSDN的 C# vs Java概述中得到的理解是,原语是对象而不是包装器.如果是这样的话,为什么他们需要 boxed来调用方法呢?看起来他们的意思不同于Java的自动装箱,但我不确定是什么.它看起来更像是铸造.

解决方法

拳击是Java和C#中非常相似的概念.不同之处在于它何时发生:
Character ch = 'a';

这将导致Java中的装箱,因为’a’是原始的而Character是class(包装器).
在C#中:

Char ch = 'a';

不会导致装箱,因为Char不是原始类型,而是值类型类.要在C#中进行装箱,您需要将值类型的对象强制转换为对象引用.

object o = 'a';

编辑:正如HighCore在评论中所提到的,C#中的拳击机制有重要意义.将东西放入List< int>不会导致拳击和取出东西不会导致拆箱,因为整数列表是未装箱的整数的真实列表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读