一道面试题

pan343656 2012-02-14 08:50:56

class Program
{
static void Main(string[] args)
{
B b = new B();
Console.ReadLine();
}
}
class A
{
public A()
{
Test();
}
public virtual void Test()
{ }
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
Test();
}
public override void Test()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}

输出什么?
...全文
130 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdef1111111 2012-02-14
  • 打赏
  • 举报
回复
居然没答对,汗
  • 打赏
  • 举报
回复
太难了。。。先睡了,
想知道答案,自己放到VS里面去看看呗
想考考别人,呼呼呼呼。。。。
buyong 2012-02-14
  • 打赏
  • 举报
回复
x=1,y=0
x=1,y=-1
ycagri 2012-02-14
  • 打赏
  • 举报
回复
居然也做错了
pan343656 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 caozhy 的回复:]

构造函数去调用一个虚方法,这样的设计如同结构化程序中硬塞入的goto语句一样,用面向对象的方法设计完全和面向对象思想背道而驰的程序。
[/Quote]
没办法,上次去一家公司的面试题,还好答对了
threenewbee 2012-02-14
  • 打赏
  • 举报
回复
构造函数去调用一个虚方法,这样的设计如同结构化程序中硬塞入的goto语句一样,用面向对象的方法设计完全和面向对象思想背道而驰的程序。
杨友山 2012-02-14
  • 打赏
  • 举报
回复
作错了,我晕。这个代码实用性是啥呢?项目里要是写这样的代码,是要被人搞死的。
threenewbee 2012-02-14
  • 打赏
  • 举报
回复
这种脱离实际没事找事的面试题有什么意义?
baichangle 2012-02-14
  • 打赏
  • 举报
回复
x=1,y=0
x=1,y=-1
EnForGrass 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pan343656 的回复:]

引用 6 楼 chinajiyong 的回复:

由于B继承A,B b = new B();先调用A的构造函数,Test函数,输出结果:x=1,y=0(因为y未赋值,默认值为0)
B重新A的Test方法,调用B的构造函数,y=-1,输出结果:x=1,y=-1

正解
[/Quote]
继承关系要理解清楚构造函数的执行顺序
pan343656 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chinajiyong 的回复:]

由于B继承A,B b = new B();先调用A的构造函数,Test函数,输出结果:x=1,y=0(因为y未赋值,默认值为0)
B重新A的Test方法,调用B的构造函数,y=-1,输出结果:x=1,y=-1
[/Quote]
正解
EnForGrass 2012-02-14
  • 打赏
  • 举报
回复
由于B继承A,B b = new B();先调用A的构造函数,Test函数,输出结果:x=1,y=0(因为y未赋值,默认值为0)
B重新A的Test方法,调用B的构造函数,y=-1,输出结果:x=1,y=-1
pan343656 2012-02-14
  • 打赏
  • 举报
回复
还没人答对
QWER_ASDFASDF 2012-02-14
  • 打赏
  • 举报
回复
这考的是继承关系
烟波钓 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yanbuodiao 的回复:]
x=1,y=-1
[/Quote]
e
烟波钓 2012-02-14
  • 打赏
  • 举报
回复
1,-1
朕赐你肥皂 2012-02-14
  • 打赏
  • 举报
回复
X=1 Y=-1

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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