如果我将一个 int 值分配给一个 class 的对象内的变量,那么我可以将其称为装箱吗

If I assign an int value to a variable which is inside an object of a class, then can I call it as boxing

在 Microsoft Docs 中,装箱的定义是:

Boxing is used to store value types in the garbage-collected heap.

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing#boxing

如果我将一个 int 值赋给一个位于 class 对象内部的变量,那么我可以将其称为装箱吗?在这种情况下,值类型是从堆栈存储到堆。

namespace ConsoleApp1
{
    class Student
    {
        public int Age;
    }

    class Program
    {
        static void Main(string[] args)
        {
            var age = 10; // inside stack
            var s1 = new Student(); 
            s1.Age = age; // assign the value from stack to heap. is it boxing?
        }
    }
}

或者仅当值类型存储在 System.Object 或由值类型实现的任何接口时才会发生装箱?

不,这不是拳击。

堆中的所有东西都必须包含在一个对象中。如果你已经有了一个对象,就像这里一样,一切都很好。

但是,如果您只想将一个值单独放入堆中,则没有对象可将其放入。此时我们通过构造一个刚好存在的对象来“装箱”该值包含该值。