检查变量是否为零的最佳方法是什么?

时间:2012-05-15 13:56:42

标签: delphi pointers

所有程序应该做的一个常见情况是检查变量是否已分配。

采取以下声明:

(1)

if Assigned(Ptr) then
begin
  // do something
end;

(2)

if Ptr <> nil then
begin
  // do something
end;

Assigned(Ptr)Ptr <> nil之间的区别是什么?

2 个答案:

答案 0 :(得分:35)

它通常是相同的......除非你检查一个功能......

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;

使用第二种语法,它将检查函数的结果,而不是函数本身......

答案 1 :(得分:5)

就性能而言,没有区别。我个人更喜欢第二种形式,因为我发现人类可以更快地解析意义。