循环创建新的类实例

时间:2018-11-07 06:56:23

标签: c#

我刚刚开始学习方法和类,我想知道是否可以拥有类似的东西

CarsSold Day1 = new CarsSold();

在for循环中,它将在每次运行时创建一个新的一天的新实例。例如,在第二次循环运行时,我希望它创建这样的实例

CarsSold Day2 = new CarsSold(); 

我尝试使用数组,但是要么无法使用数组完成,要么我使用了错误的语法。预先感谢。

完整代码

    class Program
{
    static void Main(string[] args)
    {
        int[] weekDay = new int[7];
        int userInput;

        int x;
        for (x = 0; x < weekDay.Length; x++)
        {

            Console.Write("Enter the number of cars sold: ");
            bool ifInt = int.TryParse(Console.ReadLine(), out userInput);

            CarsSold Day[x] = new CarsSold(userInput);
        }
    }
}

3 个答案:

答案 0 :(得分:3)

数组中可以包含一定数量的东西,因此,如果您声明这样的数组

object[] objectArray = new object[10];

然后该数组只能容纳10个对象。如果要向数组中添加任何内容,则必须选择将其分配给的索引,例如:

objectArray[2] = "some value";

在您的情况下,您可以遍历数组并像这样向每个索引添加新对象

for (var i = 0; i < objectArray.Length; i++)
{
        objectArray[i] = new YourObject();        
}

如果您要存储的对象数量未知并且可以更改,则应使用集合,例如列表

List<object> listOfObjects = new List<object>();

现在,如果您想向该列表添加任何内容,只需执行

listOfObjects.Add(itemYouWantToAddToTheList);

您访问列表的方式与访问数组的方式相同,因此可以使用类似的索引

var someValue = listOfObjects[0];

您可能已经注意到该列表具有通用参数<object>,它告诉列表可以存储什么类型的数据,在我的示例中,它是对象类型,因此可以存储几乎所有内容,但是您可以设置将其转换为字符串或整数或任何其他类型(如您自己的类类型),然后此列表将仅存储那些类型的对象。

答案 1 :(得分:3)

问题在于您如何尝试定义数组。语法无效,并且您在错误的位置执行此操作。

您应在循环之前 定义数组,然后仅在循环内为数组分配值。

static void Main(string[] args)
{
    int userInput;
    CarsSold[] days = new CarsSold[7]; // create an array with 7 items

    int x;
    for (x = 0; x < days.Length; x++)
    {

        Console.Write("Enter the number of cars sold: ");
        bool ifInt = int.TryParse(Console.ReadLine(), out userInput);

        days[x] = new CarsSold(userInput); // assign a value to the days array at position x.
    }
}

还要注意,数组从0开始,而不是1,因此第一个项目实际上是days[0],最后一个是days[6](对于7个项目的数组)。我自由地删除了weekDays,因为这里不需要它了,然后将其替换为days.Length

答案 2 :(得分:1)

如果您不知道天数,那么:

IList<CarsSold> soldCarsList = new List<CarsSold>();

foreach(var day in Days)
{
    soldCarsList.Add(new CarsSold());
}

如果您知道天数(例如7天),则:

CarsSold[] soldCarsArray = new CarsSold[7];

for (int i = 0; i < days.Length; x++)
{
   soldCarsArray[i] = new CarsSold();
}