Delphi (-XE):通过隐式转换转换为记录类型



我有一个带有方法的记录类型,表示一个特定的硬件测量类型,作为字符串从仪器中读取。该记录包含到(和从)字符串的隐式转换。如果我将字符串转换为记录类型,它似乎工作,但这是安全的吗?也就是说,是否将字符串转换为隐式字符串转换的记录调用隐式转换为分配临时值?

var  a: MeasurementRecord;         // record type with implicit string conversion & decode methods
b: string;
c:double;
begin
b := Edit1.Text;              // Or any other string source 
a:=b;                         //Ok
a:= edit1.text;               //Ok
c:= a.returnQc;                 // returns measurement quality value
c:= MeasurementRecord(Edit1.text).returnQC;   //Avoiding local variable. This works, but is it correct useage?
end;

是的,这是非常安全的。代码MeasurementRecord(Edit1.text)将使用

从字符串Edit1.Text创建MeasurementRecord记录。
class operator Implicit(S: string): MeasurementRecord

,然后调用其中的returnQC函数。(但是,如果您也有

class operator Explicit(S: string): MeasurementRecord

,因为强制类型转换实际上是显式的。

最新更新