0

如何从 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);
}

如果我搬家?进入parathesis,它不会编译:

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

1 回答 1

0

我假设这是一个错字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();
于 2017-06-06T07:04:38.260 回答