c#是否可以由Type变量实现数组创建

例如inst1是某个类实例。我事先并不知道inst1的类型,我先这样
Type t = inst1.GeType
这样t就存储了inst1的类型
现在我要创建一个该类型的对象数组,这个可以实现吗?

利用反射应该可以实现,参考如下

Type t = inst1.GeType();
Assembly asm = Assembly.GetExecutingAssembly(); //当前程序集
object[] items = new object[10];
for(int i=0; i<10; i++)
{
    items[i] = asm.CreateInstance(t.FullName); //创建对象实例
}

你可以用泛型,或者object类型来存
没必要用type
只有你真正需要调用它里面的属性或函数的时候,你才需要知道它的type

用.NET 6(C# 10)写了一个反射实现的泛型集合,示例如下:

var list1 = CreateGenericList<int>();
list1.AddRange(new[] {1, 2, 3});
foreach (var item in list1)
{
    Console.WriteLine($"int item: {item}");
}

var list2 = CreateGenericList<MyClass>();
list2.Add(new(2));
list2.Add(new(4));
list2.Add(new(6));
foreach (var item in list2)
{
    Console.WriteLine($"MyClass id: {item.Id}");
}

static List<T> CreateGenericList<T>()
{
    var listType = typeof(List<>);
    var constructedListType = listType.MakeGenericType(typeof(T));
    var instance = (List<T>) Activator.CreateInstance(constructedListType)!;
    return instance;
}

public record MyClass(int Id);

运行结果:

int item: 1
int item: 2
int item: 3
MyClass id: 2
MyClass id: 4
MyClass id: 6