C#抽象类,适用于数组初始化

nun*_*unu 3 c# oop abstract-class design-patterns

我们知道我们无法创建实例abstract class.

我只是想知道,如果我们创建抽象类的数组,它肯定会工作.

例如

public abstract class Creator
{
    public abstract void DoSomething();
}

Creator creator = new Creator(); // this will give you compilation error!

Creator[] creator = new Creator[2]; // this will SURE work and will NOT give you compilation error.
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道为什么会发生这种情况以及为什么它正在使用数组初始化?

提前致谢.

Tom*_*cek 7

初始化期间存储在数组中的值都是null,因此实际上并不创建抽象类的任何实例.数组初始化对应于以下(正确)行:

Creator creator = null;
Run Code Online (Sandbox Code Playgroud)

创建一个类型的数组AbstractClass[]实际上非常有用,因为您可以将引用存储到数组中的某个具体(继承)类.例如:

var objects = new object[2];
objects[0] = "Hello";
objects[1] = new System.Random();
Run Code Online (Sandbox Code Playgroud)

然后,您可以迭代objects数组并调用ToString()所有对象.