gpt4 book ai didi

delphi - 什么时候在 Delphi 中使用 is 运算符是正确的?

转载 作者:行者123 更新时间:2023-12-03 18:09:20 25 4
gpt4 key购买 nike

在下面的情况下,我如何测试一个 not nil TObject 不包含特定类的对象?

procedure TForm7.testme;
var
mystring: string;
obj: TObject;
begin
mystring := 'asd';
obj := TObject(mystring);

if assigned(obj) then
if obj is TestClass then // --> this is failing
// ...
end;

最佳答案

obj := TObject(mystring);

这是错误的。 TObject 可以包含一个有效的对象,或者nil。其他任何事情都会导致未定义的行为。这意味着 ,或者实际上任何其他东西,都不能期望以任何有意义的方式运行。

在对象引用上操作的任何方法的实现都隐含地依赖于引用实际上是一个对象。对于像 is 这样的东西,实现查找实例的类,这取决于作为对象布置的内存。字符串不符合要求。

is 运算符可以告诉您有关对象类型的信息。将不是对象的东西传递给它是非法的,特殊值 nil 除外。

解决方案是停止将无效数据放入您的对象引用中。

关于delphi - 什么时候在 Delphi 中使用 is 运算符是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44543343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com