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%类似