从一种可空类型转换为另一种可空类型
Converting from one nullable type to another nullable type
如何从 class A 的可为空实例转换为 class B 的可为空实例,而 B 是 A 的子class,我试过这个但它崩溃了:
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);
}
我假设这是一个拼写错误 A? instance_1=something_maybe_null;
因为你不能做可为 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();
如何从 class A 的可为空实例转换为 class B 的可为空实例,而 B 是 A 的子class,我试过这个但它崩溃了:
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);
}
我假设这是一个拼写错误 A? instance_1=something_maybe_null;
因为你不能做可为 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();