从一种无效类型转换为另一种无效类型



一个人如何从a的无效实例转换为b类的无效实例,而b是a的子类,我尝试过,但它崩溃了:

class A
{
}
class B:A
{
}
A? instance_1=something_maybe_null;
if (instance_1.GetType() == typeof(B))
{
    ((B)(instance_1))?.some_method_in_B(paramters);
}

如果我移动?进入巴理作用,它不会编译:

...
if (instance_1.GetType() == typeof(B))
{
    ((B)(instance_1)?).some_method_in_B(paramters);
}

我假设这是一个错字A? instance_1=something_maybe_null;,因为您不能执行无效的参考类型(即类(,至少在C#6中。

如果我正确理解您的意图,则只想有条件地调用B中的方法,如果对象实际上是B的实例。如果是这样,那么您可以这样做:

class A
{
}
class B : A
{
    public void SomeMethodInB() {  }
}
A instance_a = something_maybe_null;
B instance_b = instance_a as B;
instance_b?.SomeMethodInB();

最新更新