Delphi中"结果"的默认值是多少?

han*_*aad 13 delphi

函数的Result变量是否有任何保证的默认值,如0,''或nil?或者结果总是在使用前初始化?

我有一个函数返回一个这样的字符串:

function Foo(): String
begin
    while {...} do
    Result := Result + 'boingbumtschak';
end;
Run Code Online (Sandbox Code Playgroud)

它运行正常,但现在我得到一些字符串,其中包含之前调用该函数的内容.当我Result := ''在开头添加一个,它没关系.我什么时候应该初始化Result变量,什么时候不需要?(字符串,基元,类实例(零))

Dav*_*nan 19

类型的函数返回值string实际上由编译器视为隐式var参数.当函数开始执行时,Result变量包含随后将为其分配返回值的局部变量中的任何内容.

因此,您应始终初始化函数返回值.此建议不仅适用于字符串,还适用于所有数据类型.

昨天在Stack Overflow上讨论了这个问题.

  • 你提到的链接最终链接到Barry Kelly的回答.很难比这更精确.我投票决定关闭这个. (2认同)

spl*_*ash 6

如果函数退出而没有为Result或函数名赋值,则函数的返回值是未定义的.

请参阅Delphi参考 > 过程和函数 > 函数声明