我最近遇到了一个看起来像这样的例程:
procedure TMyForm.DoSomething(list: TList<TMyObject>; const flag: boolean);
var
local: integer;
begin
if flag then
//do something
else local := ExpensiveFunctionCallThatCalculatesSomething;
//do something else
for i := 0 to list.Count do
if flag then
//do something
else if list[i].IntValue > local then //WARNING HERE
//do something else
end;
这给出了 Variable 'local' might not have been initialized
即使您可以通过阅读代码知道除非初始化它的代码分支已经运行,否则您不会点击该行。
现在,我可以通过添加无用的 local := 0;
来摆脱这个警告。在程序的顶部,但我想知道是否有更好的方法来构建它以避免这个问题。大家有什么想法吗?
最佳答案
我会将其分成两个 for 循环——一个用于标志为 true 时,另一个用于标志为 false 时。作为一个额外的好处,您不必在每次迭代时都执行 if 语句。
关于delphi - 避免 "variable might not have been initialized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717383/