我正在使用Delphi.我有一个根类和许多派生类从根,类的名称说TROOT,TA,TB,TC ...在代码中,我有一些代码通过以下代码控制程序的流程
var
obj :TROOT;
begin
if ((obj is TA) or (obj is TB) or (obj is TC) or (obj is TD)) then
begin
// some other codes here
end
end;
Run Code Online (Sandbox Code Playgroud)
这段代码运行良好,但随后我扩展了我的代码,因此更多的子类是从TROOT派生出来的,并且swtich出现在程序的多个位置.有没有什么办法可以把类类型放到一个集合或数组中,并有一些psudeo代码,如下所示,所以我不必在代码扩展时随处修改?
classarray = {TA, TB, TC, TD, TE, TF};
if (obj in classarray) then
begin
// put my code here
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
您当然可以将类放在数组中.声明这样的类型:
type
TRootClass = class of TRoot;
TRootClassArray = array of TRootClass;
Run Code Online (Sandbox Code Playgroud)
声明并填充数组:
var
RootClasses: TRootClassArray;
SetLength(Classes, 4);
RootClasses[0] := TA;
RootClasses[1] := TB;
RootClasses[2] := TC;
RootClasses[3] := TD;
Run Code Online (Sandbox Code Playgroud)
然后你可以测试数组的内容:
var
c: TRootClass;
for c in RootClasses do
if obj is c then
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |