比较两种类型

时间:2012-02-26 23:12:56

标签: c# .net types

我正在尝试比较两种类型,但我不断收到错误。

 if (mediaTitleCollection[i].GetType() == Catalog.FilmMedia)

我收到以下错误:'Catalog.FilmMedia'是'type',在此上下文中无效。

我没有完全看到问题,因此与我相比较的主要因素是一个类型?

5 个答案:

答案 0 :(得分:5)

使用typeof

if (mediaTitleColection[i].GetType()==typeof(Catalog.FilmMedia)

答案 1 :(得分:4)

您需要使用typeof()这将返回一个比较类型。

if(mediaTitleCollection[i].GetType() == typeof(Catalog.FilmMedia))

或者您也可以使用is运算符:

if(mediaTitleCollection[i] is Catalog.FilmMedia)

答案 2 :(得分:2)

is运算符更快更容易阅读,所以一定要使用它。

if(mediaTitleCollection[i] is Catalog.FilmMedia)

如果您需要将mediaTitleCollection[i]投射到FilmMedia,您可以做的另一件事是:

Catalog.FilmMedia filmMedia = mediaTitleCollection[i] as Catalog.FilmMedia;
if (filmMedia != null)
{
    ...
}

答案 3 :(得分:1)

尝试typeof(Catalog.FilmMedia)右侧的==

Catalog.FilmMedia不是运行时可以比较的任何内容 - 您必须使用Type将其转换为typeof

答案 4 :(得分:1)

您需要使用声明类型

if (mediaTitleCollection[i].GetType() == typeof(Catalog.FilmMedia))