其实不算是Delphi的BUG了,但真的是非常非常讨厌的一个特性。
我本以为为初始化过的类就应当是nil。所以使用Assigned判断类变量是否初始化过。那知道我是否初始化过都能通过nil的检测。据说Delphi为了保证类函数的使用,会自动对这个类变量进行初始化。而当前类的指针就随便指向了一块内存空间。
感觉这个问题实在是太讨厌了,大大增加了编码出错的概率。一个变量如果并不是需要在创建的时候初始化的你就无法通过判断是否为nil检测该变量是否初始化过,除非你在创建的时候就手动赋值为nil,但这点很容易被忽略掉。
PS:
今天又和同学讨论了下这个问题。想来这个问题也是可以理解的,在C++中也存在类似的问题。看来我是被JAVA等高级语言给惯坏了。nil这个初始值虽然很简单,但确实很有用。