gpt4 book ai didi

java - C# 中的 "Boxing"是什么意思(相对于 Java)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:40 25 4
gpt4 key购买 nike

我是在 Java 背景下学习 C# 的,对 ValueType 有一些困惑。我阅读 MSDN 的 C# vs Java 的理解概述是原语是对象而不是包装器。如果是这样,为什么他们需要 boxed调用方法?看起来它们的含义与 Java 的自动装箱不同,但我不确定是什么。它看起来更像是类型转换。

最佳答案

装箱是 Java 和 C# 中非常相似的概念。不同之处在于它发生的时间:

Character ch = 'a';

这将导致 Java 中的装箱,因为 'a' 是原始类型而 Character 是类(包装器)。在 C# 中:

Char ch = 'a';

不会引起装箱因为Char不是原始类型而是值类型类。要在 C# 中引起装箱,您需要将值类型的对象转换为 object引用。

object o = 'a';

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

关于java - C# 中的 "Boxing"是什么意思(相对于 Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com