C# 测试一个类是否是另一个类的子类型

本文关键字:是否是 另一个 类型 一个 测试 | 更新日期: 2023-09-27 17:55:12

这看起来很像我写的另一篇文章,但我正在用C#编写类似的程序。我有卡类和类土地,这是卡的一个子类。在Java中,我使用instanceof来确定它是否是Card的子级。所引用的对象保存在变量c我已经尝试过:

if (typeof (Land).isSubClassOf(typeof(Card))){
//random code
}

在Java中,我正在尝试做的是:

if ( c instanceof Land){
}

C# 测试一个类是否是另一个类的子类型

if(foo is Bar) {
    return (Bar)foo;
}

对于直接继承:

static void Main(string[] args)
{
    Land c = new Land();
    bool isCard = c.GetType().IsSubclassOf(typeof(Card));
}

或:

static void Main(string[] args)
{
    Land c = new Land();
    bool isCard = c is Card;
}

不要先检查类型,然后再进行强制转换。如果你这样做,你实际上是在检查类型两次。这样做:

var l = c as Land;

如果c可以转换为Landl将包含该内容。如果没有,它将null.

如果这样做:

if(c is Land)
    l = (Land)c;

然后你实际上是在检查c两次。一次检查它是否属于Land型,然后再次进行实际的转换。

C# As 关键字

相关文章: