class Class1
{
privatestaticint count =0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
}
staticvoid 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
1吧, 要想知道正确的答案还不简单,在VS中运行一下就知道了。
楼主有时间上来发帖还不如建个项目跑一下代码.....
跑不起呀 。。你试一试就知道了
3
static Class1()
{
count++;
}
运行了一次
public Class1()
{
count++;
}
运行了两次
好的 谢谢了
应该是为3,因为静态成员属于类而不是属于对象的
我没跑,但我看好像应该是要报错的。
分析如下:
private static int count =0; //静态的可视为全局的。
static Class1() //静态函数,但没有调用,所以方法体不会执行。
public Class1() //构造函数,执行两次,改变全局变量两次。
到这里,按理说已经有答案了,o1.Count=2 。
但是,private static int count =0;
呵呵,私有的。虽说静态的可视为全局的,但也仅是“可视为”。
所以,Console.WriteLine(o1.count); 这句代码根本是不可能运行成功的。
我想,要么是楼主被门夹了,要么是我们被门夹了。很显然,我们都不是后者。
自以为自己很了不起的sb滚 这是他妈的公司面试题 由你在这儿乱说
真对不起,我真无意质疑你的智商。但,事实就是那样。不管你信不信,反正我是信了。
你说“count是私有字段,所以Console.WriteLine(o1.count)是不可能运行成功的”(更准确说是不能编译成功),是正确的。 但是对于count的值分析是错误的。
大家冷静点,就事论事。
静态成员在构造函数之前实例化,并且不会再次实例化 所以答案是3
答案大家都有共识了,我觉得题目原来应该是这样:
class Class1
{
privatestaticint count =0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
staticvoid Main(string[] args)
{
Class1 o1 =new Class1();
Class1 o2 =new Class1();
Console.WriteLine(o1.count);
}}
这样就能编译通过了
1.count为私有字段,Console.WriteLine(o1.count);会编译报错 私有字段不可访问
2.count为static变量,需要使用类名访问,而不是对象访问,o1.count应改为Class1.count
3.static Class1()执行1次,public Class1()执行2次,结果是3
4.“ 自以为自己很了不起的sb滚 这是他妈的公司面试题 由你在这儿乱说”——你这么说,那请问公司的面试题就一定是正确的么? 有没有故意出错迷惑的可能? 你自己将代码调试了么?