使用默认构造函数初始化对象数组,而无需手动初始化每个对象

时间:2018-03-05 15:45:47

标签: c#

我有一种感觉,我可能会因此而被投票,但我确实试图查找它。

我想初始化一个类类型对象的数组。错误... ref类型,我认为他们称之为C#。我想要一个非原始的非结构类型的数组。

在谷歌搜索和阅读Stack Overflow Answers后,我遇到的唯一语法是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication4
{
    public class Person
    {
        static int _nextId = 1;
        int _id;

        public Person()
        {
            _id = _nextId++;
        }
    };

    class Program
    {
        static void Main(string[] args)
        {
            Person[] people = new Person[]
            {
                new Person()
              , new Person()
            };

            if( people[0] == null)
            {
                throw new System.Exception("Your C# syntax is wrong, noob");
            }

        }
    }
}

我的问题是,如果我想要一个这样大小的数组,我肯定不想再召唤新人10万次。我想我可以在for循环中完成它,但是语言是否内置了一些内容,只是使用默认构造函数初始化数组中的一些对象,而不需要为每个对象进行手动初始化?

2 个答案:

答案 0 :(得分:0)

你必须实例化每一个,但你可以使用循环:

Person[] people = new Person[100000];

for (int i = 0; i < people.Length; i++)
    people[i] = new Person();

答案 1 :(得分:0)

您可以提供解决方案:

    public T[] arrayOf<T>(int count) where T : new()
    {
        T[] arr = new T[count];
        for (int i = 0; i < count; i++)
        {
            arr[i] = new T();
        }

        return arr;
    }

    private void usage()
    {
        Person[] persons = arrayOf<Person>(100);
    }