首页 新闻 会员 周边 捐助

求解C#--高手--

0
[已关闭问题] 关闭于 2012-03-29 16:55

 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

写错的意境的主页 写错的意境 | 初学一级 | 园豆:136
提问于:2012-03-28 22:12
< >
分享
所有回答(8)
-3

1吧, 要想知道正确的答案还不简单,在VS中运行一下就知道了。

悟行 | 园豆:12559 (专家六级) | 2012-03-28 22:22
0

楼主有时间上来发帖还不如建个项目跑一下代码.....

Y2zz | 园豆:393 (菜鸟二级) | 2012-03-28 22:40

跑不起呀 。。你试一试就知道了

支持(0) 反对(0) 写错的意境 | 园豆:136 (初学一级) | 2012-03-28 22:41
2

3

static Class1()
{
count++;
}

运行了一次

public Class1()
{
count++;
}

运行了两次

artwl | 园豆:16736 (专家六级) | 2012-03-28 22:44

好的 谢谢了

支持(0) 反对(0) 写错的意境 | 园豆:136 (初学一级) | 2012-03-28 22:45
0

应该是为3,因为静态成员属于类而不是属于对象的

yangtam | 园豆:369 (菜鸟二级) | 2012-03-28 22:55
0

我没跑,但我看好像应该是要报错的。
分析如下:

private static int count =0; //静态的可视为全局的。

static Class1() //静态函数,但没有调用,所以方法体不会执行。

public Class1() //构造函数,执行两次,改变全局变量两次。

到这里,按理说已经有答案了,o1.Count=2 。

但是,private static int count =0;

呵呵,私有的。虽说静态的可视为全局的,但也仅是“可视为”。

所以,Console.WriteLine(o1.count); 这句代码根本是不可能运行成功的。

我想,要么是楼主被门夹了,要么是我们被门夹了。很显然,我们都不是后者。

中文代码 | 园豆:951 (小虾三级) | 2012-03-28 23:10

自以为自己很了不起的sb滚  这是他妈的公司面试题  由你在这儿乱说

支持(0) 反对(0) 写错的意境 | 园豆:136 (初学一级) | 2012-03-28 23:11

真对不起,我真无意质疑你的智商。但,事实就是那样。不管你信不信,反正我是信了。

支持(0) 反对(0) 中文代码 | 园豆:951 (小虾三级) | 2012-03-28 23:23

你说“count是私有字段,所以Console.WriteLine(o1.count)是不可能运行成功的”(更准确说是不能编译成功),是正确的。 但是对于count的值分析是错误的。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-29 10:06

大家冷静点,就事论事。

支持(0) 反对(0) today4king | 园豆:3499 (老鸟四级) | 2012-03-29 10:47
0

静态成员在构造函数之前实例化,并且不会再次实例化    所以答案是3

鬼火飘荡 | 园豆:201 (菜鸟二级) | 2012-03-29 10:23
0

答案大家都有共识了,我觉得题目原来应该是这样:

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);
}}

这样就能编译通过了

today4king | 园豆:3499 (老鸟四级) | 2012-03-29 10:46
0

1.count为私有字段,Console.WriteLine(o1.count);会编译报错 私有字段不可访问

2.count为static变量,需要使用类名访问,而不是对象访问,o1.count应改为Class1.count

3.static Class1()执行1次,public Class1()执行2次,结果是3

4.“ 自以为自己很了不起的sb滚  这是他妈的公司面试题  由你在这儿乱说”——你这么说,那请问公司的面试题就一定是正确的么? 有没有故意出错迷惑的可能? 你自己将代码调试了么?

子夜一梦 | 园豆:213 (菜鸟二级) | 2012-03-29 12:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册