Does a value type property in a reference type contain boxed value?
不,它包含值(int
)本身(至少在我所知的当前C#实现中).如果您想更深入地了解CLR实现的详细信息,请查看Managed object internals篇系列文章:
托管对象的布局非常简单:托管对象包含实例数据、指向元数据的指针(也称为.方法表指针)和一包内部信息,也称为对象头.
What will happen when I pass the property in a method like this?
值SomeClass.intProperty
(通过getter调用)将被复制并作为参数传递给SomeMethod
调用.
Will the passing of intProperty copy the value from the property like value types usually do?
是.如果你担心的是SomeMethod
可以以某种方式改变SomeClass.intProperty
的价值--那么不,它不能(尽管它与装箱/取消装箱无关):
SomeMethod(obj.intProperty);
Console.WriteLine(obj.intProperty);// Prints "1"
void SomeMethod(int value)
{
value = 42;
Console.WriteLine(value); // Prints "42"
}
附注:
我强烈建议遵循standard naming conventions,即此处物业的pascal case -SomeClass.intProperty
->;SomeClass.IntProperty