如何检查动态数组是否为空

Del*_*bie 9 arrays delphi

我有一个如此声明的过程:

procedure MyProc(List: Array of string);
Run Code Online (Sandbox Code Playgroud)

我想知道如何检查List参数是否为空.

例如:

procedure MyProc(List: Array of string);
begin
  if List=[] then // here I want to check if the List array is empty
  //do something
  else 
  //do something else
end;
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

RRU*_*RUZ 24

你可以使用这个Length功能

procedure MyProc(List: Array of string);
begin
  if Length(List)=0 then // is empty ?
  //do something
  else 
  // do something else
end;
Run Code Online (Sandbox Code Playgroud)


Rob*_*edy 10

空数组等于nil:

if List = nil then // it's empty
Run Code Online (Sandbox Code Playgroud)

(这也意味着SetLength(List, 0)并且List := nil是等效的命令.)

空数组的最后一个索引小于第一个索引,对于示例中的open数组,这意味着具有负的最后一个索引:

if High(List) < 0 then // it's empty
Run Code Online (Sandbox Code Playgroud)

这意味着如果您想避免在空数组上运行循环,则不必执行任何特殊操作.只需像往常一样编写循环:

for i := Low(List) to High(List) do // won't run if List is empty
Run Code Online (Sandbox Code Playgroud)

  • @RRUZ:这是因为`List = nil`只适用于`动态数组'(就像这个问题的标题一样),但不适用于`open arrays`(就像这个问题的例子一样).海报是混合动态和开放阵列. (2认同)