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