Delphi变量和TValues

5

我知道当我转换数据类型时,即使只是添加包含整数的两个变量值,Variants 也会很慢。我还发现了另一种类似于 Variants 的东西,叫做 TValue

它们之间有什么区别?

我考虑使用 TStopWatch 进行经典的速度测试,但我认为这不足以理解它们之间的区别。

2个回答

18

TValue并非用于转换数据类型,而是用于在使用RTTI时传递值。

它仅允许转换直接可赋值的数据类型(例如将Integer转换为Int64或将Byte转换为Integer)。但与Variant不同的是,它不允许例如将包含数字的string强制转换为Integer,而会引发EInvalidCast异常。


16

TValue不像Variant那样,它不会执行数据转换。如果您要求TValue返回与当前持有类型不同的类型,并且所持有的类型与请求的类型不兼容(即在正常语言语法中通常不会隐式转换),则TValue会引发EInvalidCast异常。


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