现有类TestClass01,其代码如下:
type TestClass01=class()
value;
function create(_value)
begin
value:=_value;
end
class function add(x,y)
begin
if ifnumber(x) and ifnumber(y) then
return x+y;
else
return 0;
end
end
范例01:获取当前运行环境下所有对象的引用计数信息
//创建对象,初始引用个数均为1
objA:=new TestClass01(100);//objA-直接引用:1,间接引用:1
//将对象赋值给其它变量,增加objA的直接引用数
objC:=objA;//objA-直接引用:2,间接引用:1
objB:=new TestClass01(101);//objB-直接引用:1,间接引用:1
//通过对象查找类中的方法,增加objB的间接引用
funcA:=findfunction("add",objB);//objB-直接引用:1,间接引用:2
funcB:=findfunction("add",objB);//objB-直接引用:1,间接引用:3
//通过类名查找类中的方法,没有引用对象,已有对象引用数不变
funcC:=findfunction("add",class(TestClass01));
return TSLObjects(0);
//结果:
范例02:获取当前运行环境下所有对象信息以及原对象,并通过该结果访问其属性、方法
objA:=new TestClass01(100);
objB:=new TestClass01(101);
objsInfo:=TSLObjects(1);
newObjA:=objsInfo["TestClass01"][1,"obj"];
newObjB:=objsInfo["TestClass01"][0,"obj"];
//获取到的对象,其属性和方法与先前直接创建出的对象一致
v1:=newObjA.value;
v2:=newObjB.value;
t1:=newObjA.add(1,2);
t2:=newObjB.add(3,4);
return array(v1,v2,t1,t2);
//结果:
