すべてのプログラムが行うべき共通の条件は、変数が割り当てられているかどうかを確認することです。
以下のステートメントを取ります:
(1)
_if Assigned(Ptr) then
begin
// do something
end;
_
(2)
_if Ptr <> nil then
begin
// do something
end;
_
Assigned(Ptr)
と_Ptr <> nil
_の違いは何ですか?
それは通常同じです...あなたが機能をチェックするときを除いて...
function mfi: TObject;
begin
Result := nil;
end;
procedure TForm1.btn1Click(Sender: TObject);
type
TMyFunction = function: TObject of object;
var
f: TMyFunction;
begin
f := mfi;
if Assigned(f) then
begin
ShowMessage('yes'); // TRUE
end
else
begin
ShowMessage('no');
end;
if f <> nil then
begin
ShowMessage('yes');
end
else
begin
ShowMessage('no'); // FALSE
end;
end;
2番目の構文では、関数自体ではなく、関数の結果をチェックします...
パフォーマンスに関しては、違いはありません。私は個人的には、人間がより迅速に意味を解析できると思うので、2番目の形式を好みます。