【发布时间】:2010-03-17 21:06:10
【问题描述】:
什么 delphi 函数断言一个对象不是 nil?
【问题讨论】:
标签: delphi
什么 delphi 函数断言一个对象不是 nil?
【问题讨论】:
标签: delphi
就像上面指出的 knight_killer 一样,您使用 Assert() 函数,断言 Assigned(obj) 是 true。当然,与大多数编译语言一样,断言不会执行(甚至包含在编译器输出中),除非您专门启用了它们,因此您不应依赖断言进行发布模式构建。
当然,您可以简单地检查nil,例如Assert(obj <> nil)。然而,Assigned() 产生完全相同的编译器输出,并具有额外的好处,它也适用于指向类方法的指针(实际上是一对指针,一个指向方法,另一个指向类实例),所以使用Assigned()是一个很好的习惯。
【讨论】:
不确定您的意思,但Assert(Assigned(MyObject)); 非常简短且易于使用。
【讨论】:
Assigned(AObject) 会告诉你一个对象是否为 nil。
也许值得一提的是,如果你使用 AObject.Free 释放一个对象,Assigned 仍然会返回 true。因此,请确保使用 FreeAndNil(AObject) 释放对象。
【讨论】:
如果已分配(MyObject)则 ...
【讨论】: