C#大侠请进

yangchun1213 2012-03-28 06:58:59
一道面试题我遇到了两次,明明没有答案,肯定会出错,但为什么没有会出错的选项让我选啊:
试题如下:

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
...全文
134 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
参考
最下面的代码和楼主的题目90%类似
hetengfei_ 2012-03-28
  • 打赏
  • 举报
回复
那人用错的题来考你的,//结果是3


正确写法是:
class Class1
{
public static int count = 0;
static Class1() //1
{
count++;
}
public Class1() //3 //5
{
count++;
}
}

运行:

Class1 o1 = new Class1(); //2
Class1 o2 = new Class1(); //4
MessageBox.Show(Class1.count.ToString()); //6


这已标出了它的执行步骤:

//因 第一个构造函数是静态函数: 类一声明是就会执行。
//。。下面的不说你都知道了。
//结果是3

ojekleen 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:
这个编译还真不能通过的说,
count该变量第一为静态的,第二为私有的,没法折腾。你的面试题出问题了。

是的,我当时也是这样想的,真是纠结
[/Quote]

这不是想像的问题,你拿编译器一试就知道是错误的,还有,如果你的Class1和main方法不在一个项目中也会出错的,Class1类没有定为public
yangchun1213 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
这个编译还真不能通过的说,
count该变量第一为静态的,第二为私有的,没法折腾。你的面试题出问题了。
[/Quote]
是的,我当时也是这样想的,真是纠结
ojekleen 2012-03-28
  • 打赏
  • 举报
回复
这个编译还真不能通过的说,
count该变量第一为静态的,第二为私有的,没法折腾。你的面试题出问题了。
yangchun1213 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
应改为Console.WriteLine(Class1.count);
静态变量是不需要实例化对象的。

输出值是3,因为静态变量是共用的,每实例化一次都自增1,最后输出的时候又调用构造函数自增1,相当于增加了3次1。
[/Quote]
静态变量每次实例化都加1?哪来的理论,你懂不懂啊?
mizuho_2006 2012-03-28
  • 打赏
  • 举报
回复
应改为Console.WriteLine(Class1.count);
静态变量是不需要实例化对象的。

输出值是3,因为静态变量是共用的,每实例化一次都自增1,最后输出的时候又调用构造函数自增1,相当于增加了3次1。

yangchun1213 2012-03-28
  • 打赏
  • 举报
回复
请大侠们帮忙分析下为什么会是3呢?
庄青琴弦 2012-03-28
  • 打赏
  • 举报
回复
最后一句改成这样就能通过了,答案是3
Console.WriteLine(count);
色拉油 2012-03-28
  • 打赏
  • 举报
回复
经过我精确计算
F
Sheng450422 2012-03-28
  • 打赏
  • 举报
回复
怎么才可以通过编译呢,总是报错
边城的刀声 2012-03-28
  • 打赏
  • 举报
回复
3.............

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧