如果我将一个 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 或由值类型实现的任何接口时才会发生装箱?
不,这不是拳击。
堆中的所有东西都必须包含在一个对象中。如果你已经有了一个对象,就像这里一样,一切都很好。
但是,如果您只想将一个值单独放入堆中,则没有对象可将其放入。此时我们通过构造一个刚好存在的对象来“装箱”该值包含该值。
在 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 或由值类型实现的任何接口时才会发生装箱?
不,这不是拳击。
堆中的所有东西都必须包含在一个对象中。如果你已经有了一个对象,就像这里一样,一切都很好。
但是,如果您只想将一个值单独放入堆中,则没有对象可将其放入。此时我们通过构造一个刚好存在的对象来“装箱”该值包含该值。