请帮助我们解决"几乎"的争议一切都是一个对象(Stack Overflow问题的答案作为一个新手,在学习C#之前有什么我应该注意的吗?).我认为就是这种情况,因为Visual Studio中的所有内容至少都显示为结构体.请张贴参考文献,以免它变成"现代傻瓜"(This American Life).
请注意,这个问题涉及C#,不一定是.NET,以及它如何处理引擎盖下的数据(显然它都是1和0).
以下是"一切都是对象"的评论:
对象的定义:"对象"作为类System.Object的继承者与"对象"作为类型与"对象"作为引用类型的实例."
如果有人能告诉我我是否理解它,我真的很感激:
class X
{
A a1=new A(); // reference on the stack, object value on the heap
a1.VarA=5; // on the stack - value type
A a2=a1; // reference on the stack, object value on the heap
a2.VarA=10; // on the stack - value type
}
Run Code Online (Sandbox Code Playgroud)
此外a1,a2引用都在堆栈上,而它们的"对象"值在堆上.但是VarA变量,它仍然是纯粹的价值类型呢?
class A
{
int VarA;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
类的字段,它们是存储在堆栈还是堆中?
如果我有
Class A
{
int k=0;
}
Run Code Online (Sandbox Code Playgroud)
我在做:
A x = new A();
Run Code Online (Sandbox Code Playgroud)
k存放在哪里?在堆或堆栈上?为什么?