C# 构造函数的问题
classC1{publicstaticinta=1;staticC1(){a+=2;}publicC1(){a+=3;}}C1a=newC1();C1b=newC1()...
class C1
{
public static int a = 1;
static C1()
{
a += 2;
}
public C1()
{
a += 3;
}
}
C1 a = new C1();
C1 b = new C1();
Console.WriteLine(C1.a);
为什么输出是9? 展开
{
public static int a = 1;
static C1()
{
a += 2;
}
public C1()
{
a += 3;
}
}
C1 a = new C1();
C1 b = new C1();
Console.WriteLine(C1.a);
为什么输出是9? 展开
2个回答
展开全部
使用static 修饰的属性、方法在其所属类初始化之前就会执行,并且只执行一次。在程序开始执行时,类C1中的执行过程是:
为静态成员a赋初始值为1
执行静态方法C1,将静态成员a的值增加2,变为了3
在执行代码C1 a = new C1();来实例化类C1时,执行其构造函数public C1(),将其静态成员a的值增加3,变为了6;
同样的,在执行代码C1 b = new C1();来实例化类C1时,执行其构造函数public C1(),将其静态成员a的值增加3,变为了9。
所以,在最后输出时,a的值就是9。
2016-07-15
展开全部
a = 1
public C1()//a = a+3
static C1()// a = Sub C1() + 2
C1 a1 = new C1();//a1=【"public"[a=1+3=4],"static"[a=(4+3)+2=9]】
C1 b2 = new C1();//b2= new number "9"
public C1()//a = a+3
static C1()// a = Sub C1() + 2
C1 a1 = new C1();//a1=【"public"[a=1+3=4],"static"[a=(4+3)+2=9]】
C1 b2 = new C1();//b2= new number "9"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询