关于类的实例化的疑惑,望大家帮我解决一下~~~~~
假设有类A,类B
在类B中实例化类A,那类A中的里的变量是否也被实例化了呢?
Class A()
{
public int a;
public void f()
{
}
}
Class B()
{
A a=new A();
}
像上面的例子中,调用了A a=new A()后,那类A中的a是否也被实例化了呢?
------解决方案--------------------實例化B后﹐則B中的私有變量A也同時被實例化,
注意﹕B中的a和A中的a是不一樣的.
B.a表示的是A的實例
B.a.a表示的是B中A的實例a中的成員a
------解决方案--------------------A a=new A()之后执行了A的构造函数
public int a;由于是值类型,因此,也就被初始化了
如果是这样情况
Class A
{
public C c;
那么,c并没有被实例化
假设如果A的构造函数是这样
A()
{
c = new C();
}
那么,
A a = new A();之后
c,就被实例化,原因是在A的构造函数里,实例化了
------解决方案--------------------new 是实例化
在IL 中是这样的
先全部初始化里面的局部的成员
随后调用.ctor()成员