我无法访问在数组中实例化的派生 class 方法
I can't access a derived class method that is instantiated in an array
我正在测试一些代码,有时我无法访问派生的方法class.What我做错了吗?
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] as B) 将 return null 导致 NullReferenceException并且意味着 test[0] 不能转换为类型 B.
我正在测试一些代码,有时我无法访问派生的方法class.What我做错了吗?
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] as B) 将 return null 导致 NullReferenceException并且意味着 test[0] 不能转换为类型 B.