我有一个带有方法的记录类型,代表特定的硬件测量类型,从仪器中作为字符串读取。该记录包含与字符串的隐式转换。如果我将字符串转换为记录类型,它似乎可以工作,但这安全吗?也就是说,通过隐式字符串转换将字符串转换为记录是否会根据分配临时值调用隐式转换?
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)
将创建一个MeasurementRecord
从字符串中记录Edit1.Text
使用你的
class operator Implicit(S: string): MeasurementRecord
然后调用该函数returnQC
在里面。 (但是,如果您还有
class operator Explicit(S: string): MeasurementRecord
那么将使用它,因为强制转换实际上是显式的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)