确定对象的铸造
问题描述:
我有以下确定对象的铸造
RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart;
我的问题的代码只有在运行时才能知道,如果“this.ParentToolPane.SelectedWebPart”的类型是RssFeedReader或类型的“RssCountry”
我该如何检查对象类型并将其转换为appropriatley?
非常感谢,
答
你可以这样做:
if (this.ParentToolPane.SelectedWebPart is RssFeedReader)
//...
要检查它是否是某种类型的。或者,您可以使用'as'将其用作类型,如果不是该类型,则它将为空。
RssFeedReader reader = this.ParentToolPane.SelectedWebPart as RssFeedReader;
if (reader != null)
{
//...
}
答
可以说
RssFeedReader rss;
rss = this.ParentToolPane.SelectedWebPart as RssFeedReader;
if(rss != null) {
// an RssFeedReader
}
RssCountry rc;
rc = this.ParentToolPane.SelectedWebPart as RssCountry;
if(rc != null) {
// an RssCountry
}
或
if(this.ParentToolPane.SelectedWebPart is RssFeedReader) {
// an RssFeedReader
RssFeedReader rss = (RssFeedReader)this.ParentToolPane.SelectedWebPart;
}
if(this.ParentToolPane.SelectedWebPart is RssCountry) {
// an RssCountry
RssCountry rc = (RssCountry)this.ParentToolPane.SelectedWebPart;
}
但是,被警告。几乎任何时候,你在这种类型的基础上的逻辑是一个坏的设计气味!
谢谢我决定创建一个单独的课程 - 因为它闻到不好 – nav 2010-01-20 15:39:37