C# 通过引用/值传递—;装箱/拆箱关系

C# 通过引用/值传递—;装箱/拆箱关系,c#,pass-by-reference,boxing,unboxing,C#,Pass By Reference,Boxing,Unboxing,我当时正在读,在读的时候,我读到了下面的句子,这让我很困惑 “通过引用传递值类型时,不存在装箱。” 虽然我知道拳击是什么,但我想我错过了这句话中包含的实际信息深度。我知道它基本上说没有装箱,当然也没有拆箱,但我能从中得出什么其他结论呢?按值/引用传递是否与装箱/取消装箱相关?如果按引用传递值类型,则不涉及装箱和取消装箱。正如《简而言之》一书中c#所说的那样,存在内存别名。你甚至可以在Linqpad试试。在IL代码中显示后,您将看到不涉及装箱/取消装箱。装箱与通过引用传递值类型无关,因为装箱很慢。

我当时正在读,在读的时候,我读到了下面的句子,这让我很困惑

“通过引用传递值类型时,不存在装箱。”


虽然我知道拳击是什么,但我想我错过了这句话中包含的实际信息深度。我知道它基本上说没有装箱,当然也没有拆箱,但我能从中得出什么其他结论呢?按值/引用传递是否与装箱/取消装箱相关?

如果按引用传递值类型,则不涉及装箱和取消装箱。正如《简而言之》一书中c#所说的那样,存在内存别名。你甚至可以在Linqpad试试。在IL代码中显示后,您将看到不涉及装箱/取消装箱。

装箱与通过引用传递值类型无关,因为装箱很慢。我猜这本书的作者想展示按值传递引用类型(当您有引用时,您可以更改对象属性,但不能改变引用本身)和按引用传递值类型(行为类似于传递引用类型,但不会慢装箱)之间的区别。我不同意这是一个重复的问题。他们谈论的是同一件事,但在dup中没有给出解决OP问题的答案。投票重新开放。更直接地与OP的问题有关。文章的其余部分引用如下:,“不要混淆引用传递的概念和引用类型的概念。这两个概念不一样。方法参数可以通过
ref
修改,无论它是值类型还是引用类型。当值类型通过引用传递时,不存在值类型的装箱。”考虑到这一点,我认为文章作者只是想说“通过引用传递”不会使值类型成为“引用类型”,也就是说,它不会将值类型装箱(装箱将值类型存储在
对象中,这是一种引用类型)不,它们不相关,当需要将值类型视为引用类型时,需要装箱。按引用传递用于方法调用中的别名位置。