c# - 如何创建元素自动实例化数组,例如用户自定义类型的int数组?

标签 c# .net arrays

在声明一个 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/

相关文章:

c - 一维数组中的矩阵相乘

javascript - 我有这个排序数组,我想根据点添加位置值。如果点相同位置将相同

c# - 通过转换器转换Json字符串与反序列化

javascript - 使用 forEach 过滤数组

c# - 如何在 Directx 游戏中模拟鼠标点击

c# - 我可以使用 Lotus Notes API 将电子邮件添加到我的本地 Notes 数据库吗?

c# - 有没有办法轻松屏蔽输入框对象

c# - 套接字服务器在一段时间后停止接受连接

c# - 在 Silverlight 中缓存静态类的数据

c# - 我可以在 .NET Core 可执行文件中嵌入文件并在运行时读取它吗?