关于静态成员和实例成员?请看下面程序.......
using System;
class InstCount
{
public InsCount()
{
instanceCount++;
}
static public int instanceCount = 0;
}
class AppClass
{
public static void Main()
{
Console.WriteLine(InstCount.instanceCount);
InstCount ic1 = new InstCount ic();
Console.WriteLine(InstCount.instanceCount);
InstCount ic2 = new InstCount ic();
Console.WriteLine(InstCount.instanceCount);
}
}
结果为什么是
0
1
2
不是每创建一个InstCount,instanceCount都等于0吗?
问题点数:20、回复次数:7Top
1 楼saucer(思归)回复于 2002-10-28 09:20:29 得分 20
you are wrong, instanceCount is static, it is only initialized once to 0 or whatever value you specify in the class definition -- when the class InstCount is loaded the first timeTop
2 楼coolbye(变形虫)回复于 2002-10-28 09:21:39 得分 0
static public int instanceCount = 0;
这个赋值语句只在声明instanceCount时有效。Top
3 楼slayersun(难得一见)回复于 2002-10-28 10:28:30 得分 0
因为你InstCount ic1 = new InstCount();
所以他就调用class InstCount的构造函数public InsCount()
再实例化之后,instanceCount由0-1;同理在InstCount ic1 = new InstCount();后到2;其他的你可以在static关键字上按F1找到帮助
Top
4 楼ahking(aspire)回复于 2002-10-28 11:07:49 得分 0
是不是static public int instanceCount = 0;无论在任何类内都只复制一次,而在创建类实例时并不执行!
Top
5 楼slayersun(难得一见)回复于 2002-10-28 12:22:33 得分 0
不是,你还是没有明白,在你创建类实例时,static public int instanceCount 已经等于1了,这是因为由构造函数public InsCount()
里的instanceCount++;决定的,就是说你创建几个类,instanceCount的值就是几。
Top
6 楼rbjojo(走鳞(好像是鱼))回复于 2002-10-28 13:29:02 得分 0
可以考虑一下C里面的静态变量
一样的道理Top
7 楼ahking(aspire)回复于 2002-10-28 13:34:28 得分 0
static public int instanceCount = 0不是一句赋值语句么,instanceCount在这里是类的一个字段,实例化该类时,并不执行=0的赋值,不是么???Top




