在我帮助维护的代码中,我发现了多个示例代码,如下所示:
Description := IfThen(Assigned(Widget), Widget.Description, 'No Widget');
Run Code Online (Sandbox Code Playgroud)
我希望当Widget为零时会崩溃,但是当我对其进行测试时,它运行良好。
如果我在“项目”-“选项”-“编译器”中关闭了“代码内联控件”,则重新编译它,则会出现访问冲突。
似乎因为IfIfn被标记为内联,所以如果Widget为nil,则编译器通常不会评估Widget.Description。
有什么理由应该对代码进行“修复”,因为它似乎没有被破坏?他们不想不必要地更改代码。可能会咬他们吗?
我已经用Delphi XE2和XE6对其进行了测试。
delphi ×1