首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

父类型可以强制转换成子类型?解决方案

2012-04-02 
父类型可以强制转换成子类型?TcxGridDBColumn(GridView.VisibleColumns[cbFooterSummaryColumn.ItemIndex]

父类型可以强制转换成子类型?
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

热点排行