C#大侠请进
一道面试题我遇到了两次,明明没有答案,肯定会出错,但为什么没有会出错的选项让我选啊:
试题如下:
C# code
class Class1
{
private static int count = 0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
}
static void Main(string[] args)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
Console.WriteLine(o1.count);
}
根据以上代码判断,o1.Count的值是多少?
A.1
B.2
C.3
D.4
------解决方案-------------------- 3.............
------解决方案--------------------怎么才可以通过编译呢,总是报错
------解决方案--------------------经过我精确计算
F
------解决方案--------------------最后一句改成这样就能通过了,答案是3
Console.WriteLine(count);
------解决方案--------------------应改为Console.WriteLine(Class1.count);
静态变量是不需要实例化对象的。
输出值是3,因为静态变量是共用的,每实例化一次都自增1,最后输出的时候又调用构造函数自增1,相当于增加了3次1。
------解决方案--------------------这个编译还真不能通过的说,
count该变量第一为静态的,第二为私有的,没法折腾。你的面试题出问题了。
------解决方案--------------------
------解决方案--------------------那人用错的题来考你的,//结果是3
正确写法是:
C# code
class Class1
{
public static int count = 0;
static Class1() //1
{
count++;
}
public Class1() //3 //5
{
count++;
}
}
------解决方案--------------------
参考
最下面的代码和楼主的题目90%类似