帮我理解一下静态变量和实例变量
class test
{
static void Main()
{
A a = new A();
a.addi();
A b = new A();
b.addi();
Console.WriteLine(A.i);
}
class A
{
public static int i = 0;
public void addi()
{
i = i + 1;
}
}
}
这个输出应该是2,静态变量在实例中共享,被加了两次,我可以理解,但是为什么修改之后:
class test
{
static void Main()
{
A a = new A();
a.addi();
A b = new A();
b.addi();
Console.WriteLine(a.i);
Console.WriteLine (b.i);
}
class A
{
public int i = 0;
public void addi()
{
i = i + 1;
}
}
}
输出都是1呢?应该是每个实例都有自己的变量了,我的理解应该是a.i是1而b.i是2或者a.i是0而b.i是1,但是运行结果都是1,为什么呢?
------解决方案-------------------- public int i = 0;
每个实例对应自己的i
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
------解决方案--------------------你既然已经知道“应该是每个实例都有自己的变量了”,为什么还“我的理解应该是a.i是1而b.i是2或者a.i是0而b.i是1,”呢?
------解决方案--------------------我靠,有看到菜鸟了,static 变量不为实例拥有
public static int i = 0;
A.i 是一个内存区域,
public int i = 0;
A a = new A();
分配内存空间 ,里面有i ----------1
A b = new A();
分配另一个空间,里面有i ----------2
1,2空间都叫i 而已,不过内容不同