从一个可空类型转换为另一个可空类型

时间:2017-06-06 06:29:34

标签: c# nullable c#-6.0 optional-values

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

1 个答案:

答案 0 :(得分: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();
相关问题