将 varEmpty 与零值 varInteger 进行比较时,为什么“=”运算符结果为真?

Why "=" operator results True when comparing varEmpty with a zero evalued varInteger?

为什么将 varEmpty Variant 变量与零值 varInteger Variant 变量进行比较时,= 运算符的结果是 True

var
  V1 : Variant;
  V2 : Variant;
begin
  V2 := 0;
  if(V1 = V2)
  then ShowMessage('V1 = V2')
  else ShowMessage('V1 <> V2');
end;

此代码产生以下输出:

V1 = V2

相等运算符 = 是否只检查 Variant 变量的值部分?

为了进行比较,将空变量转换为整数。根据 variant type conversion rules,未分配(空)变体被转换为 0。因此表达式 returns 为真。