糗事的教训:做事一定要细心细心再细心
今天被一个朋友狠狠捉弄了一把,所以才有此感慨,事情是这样的,一个朋友发给我一段代码,问我执行结果。代码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Subclass sub = new Subclass();
Console.ReadLine();
}
}
public class BaseClass
{
public BaseClass()
{
Console.WriteLine("基类构造函数");
}
}
public class Subclass
{
public Subclass()
: base()
{
Console.WriteLine("子类构造函数");
}
}
}
using System.Collections.Generic;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Subclass sub = new Subclass();
Console.ReadLine();
}
}
public class BaseClass
{
public BaseClass()
{
Console.WriteLine("基类构造函数");
}
}
public class Subclass
{
public Subclass()
: base()
{
Console.WriteLine("子类构造函数");
}
}
}
我一看,这也太小看咱了,咱好歹.net也折腾三年多了,不至于这么基础的知识也不知道吧。不就是子类和基类的构造函数调用顺序的问题吗,当前是基类的构造函数先执行,执行结果自然就是:
基类构造函数
子类构造函数
子类构造函数
结果被朋友嘲笑了一番,我当然不服,与之争辩。朋友建议我运行一下看看,我一想也是,事实说明一切嘛,于是建项目,复制粘贴,运行,然后傻眼了,结果竟然是:
子类构造函数
不可能!基类构造函数怎么会不执行,难道记错了?赶紧上网搜索一下,没错啊,基类的构造函数应该执行,而且会先执行。于是面对不容置疑的理论和同样不容置疑的结果,我迷糊了,赶紧虚心求教,结果朋友笑翻了,道:“你再仔细看看,Subclass继承BaseClass了么?”
我再一看,靠!
这个贱人给两个类起了两个这么贱的名字,结果俺一时不察,竟然阴沟里翻船了。
耻辱啊,活该被鄙视。
技术上任何时候都不能马虎,做事一定要细心细心再细心。再难的技术,只要用心,总有学会的时候。不过不管你技术学到多牛的程度,如果不具备技术之外一些基本素质的话,早晚会犯下让自己后悔莫及的低级错误。
志之以为戒。