父类型可以强制转换成子类型?
TcxGridDBColumn(
GridView.VisibleColumns[cbFooterSummaryColumn.ItemIndex]);
GridView.VisibleColumns[cbFooterSummaryColumn.ItemIndex]
VisibleColumns
的类型是TcxGridColumn
property VisibleColumns[Index: Integer]: TcxGridColumn;
2
TcxGridDBColumn = class(TcxGridColumn);
3TcxGridDBColumn 是TcxGridColumn的子类型,但是为什么可以
TcxGridDBColumn(
GridView.VisibleColumns[cbFooterSummaryColumn.ItemIndex]);
这样呢?
父类型可以强制转换成子类型?
[解决办法]
可以,但是最好要加一个判断:
if GridView.VisibleColumns[cbFooterSummaryColumn.ItemIndex] is TcxGridDBColumn
[解决办法]
这个主要是虽然他声明的时候是父类,但是在创建的时候是用子类创建的.
例如经常有这样的代码:
var
S:TStrings
....
S := TStringList.Create;
try
S.Add() //这个ADD的方法实际是TStringList继承的方法
TStringList(S).OnChange := myOnChange;
...
finally
S.free;
end;
[解决办法]
向下转型啊,WHY NOT