在声明一个 int 数组时,例如:
int[] test = new int[5];
数组的所有元素都自动初始化为0
。无论如何我可以创建一个在创建数组时自动初始化的类,例如 int 数组?
例如:
MyClass[] test2 = new MyClass[5];
仍然需要我调用构造函数;但是使用 int
构造函数被神奇地调用了。
int
类的哪些代码/运算符允许这种行为?
最佳答案
这里的问题是 MyClass 是一个引用类型,所以默认值为 null。因为你没有初始化数组中的对象,所以它们是空的。你可以像这样写一个助手:
T[] InitializeArray<T>(int length) where T : new()
{
T[] array = new T[length];
for (int i = 0; i < length; ++i)
{
array[i] = new T();
}
return array;
}
然后初始化你的数组:
MyClass[] something = InitializeArray<MyClass>(5);
关于c# - 如何创建元素自动实例化数组,例如用户自定义类型的int数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17309989/