我正在测试一些代码,偶尔我无法访问派生类中的方法。我可能做错了什么?
namespace Example
{
class Program
{
static void Main(string[] args)
{
A[] test = new A[2];
test[0] = new B();
test[0].Example();
test[0].Example1();
}
public class A
{
public void Example()
{
}
}
class B : A
{
public void Example1()
{
}
}
}
}
您需要将其转换为B类型,如下所示:
namespace Example
{
class Program
{
static void Main(string[] args)
{
A[] test = new A[2];
test[0] = new B();
test[0].Example();
(test[0] as B).Example1();
}
public class A
{
public void Example()
{
}
}
class B : A
{
public void Example1()
{
}
}
}
}
如果你想了解更多有关铸造的信息,请查看Docs。
编辑:在这种情况下,转换是有效的,因为test [0]是B类型,如果不是这种情况,表达式(test [0]为B)将返回null,这会导致NullReferenceException并且意味着test [0]不能转换为B型。