我刚刚开始学习方法和类,我想知道是否可以拥有类似的东西
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);
}
}
}
答案 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();
}