Delphi(-XE):使用隐式类型转换强制将数据类型转换为记录类型

5

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

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;

3
记录的声明怎么样? - David Heffernan
@HMcG 你真的应该给我们展示完整的记录,呵呵;-) - NaN
1个回答

9

没问题,这是完全安全的。代码 MeasurementRecord(Edit1.text) 将从字符串 Edit1.Text 创建一个 MeasurementRecord 记录,使用你的

class operator Implicit(S: string): MeasurementRecord

然后在其中调用函数returnQC。(但是,如果您还有一个

class operator Explicit(S: string): MeasurementRecord

如果强制转换是显式的,那么将使用此方法。

这对我来说看起来很明确。如果明确的不可用,那么会退回到隐式吗? - David Heffernan
2
@David:是的,那正是它所做的。我刚刚对这一点进行了澄清。 - Andreas Rejbrand
谢谢您的解释。我之前不知道显式/隐式回退。 - HMcG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接