为什么 "H2077 value assigned to X never used" 不会出现在字符串变量中?

Why does "H2077 value assigned to X never used" not occour with string variables?

每次我分配一个变量而不使用它...

var
  X : integer;
begin
  X := 123;
end;

在编译时,提示来帮助我说:

[dcc32 Hint] Unit1.pas(30): H2077 Value assigned to 'X' never used

不幸的是,如果未使用的变量是 string.

,则不会发生这种情况
var
  X : string;
begin
  X := 'hello';
end;

我在 Delphi 2007Delphi XE7 上重现了相同的行为,所以我认为是预期的行为。

为什么 string 变量没有引发 H2077 hint

似乎托管类型在分配和未使用时不会引发提示。

除此之外,当优化开启时,赋值也不会被删除,就像值类型一样。

为什么没有提出提示,有待推测。他们没有理由不这样做。


另请参阅 No hint generated for assigned but unused "reference to procedure",在 QP 中报告。