我无法访问在数组中实例化的派生 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.