我正在用一些代码进行测试,有时我无法访问派生类中的方法。我会怎么做?
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()
{
}
}
}
}
答案 0 :(得分:1)
您需要像这样将其转换为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型。