使用for循环将自定义对象分配给数组?

Joh*_*n M 2 c# arrays datatable .net-3.5 winforms

鉴于这个例子:

 // Create an arary of car objects.      
     car[] arrayOfCars= new car[]
     {
        new car("Ford",1992),
        new car("Fiat",1988),
        new car("Buick",1932),
        new car("Ford",1932),
        new car("Dodge",1999),
        new car("Honda",1977)
     };
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

for (int i = 0; i < dtable.Rows.Count; i++)
{
    DataRow drow = dtable.Rows[i];
    arrayOfCars[] =  new car(drow["make"].ToString(), drow["year"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

在循环数据表时如何向阵列添加其他数据?

UPDATE1:

我选择了@Reed提出的解决方案.

// Create the array, specifying the total length 
car[] arrayOfCars = new car[dtable.Rows.Count]; 

for (int i = 0; i < dtable.Rows.Count; i++) 
{ 
    DataRow drow = dtable.Rows[i]; 
    // Assign each car to the specific index within the array (arrayOfCars[i]) 
    arrayOfCars[i] =  new car(drow["make"].ToString(), drow["year"].ToString()); 
} 
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 10

一旦创建了数组,就无法向其中添加元素.而不是使用数组,使用List<car>.这将允许您调用.Add来添加元素.

例如:

 // Create an List of car objects.      
 List<car> listOfCars = new List<car>()
 {
    new car("Ford",1992),
    new car("Fiat",1988),
    new car("Buick",1932),
    new car("Ford",1932),
    new car("Dodge",1999),
    new car("Honda",1977)
 };
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

for (int i = 0; i < dtable.Rows.Count; i++)
{
    DataRow drow = dtable.Rows[i];
    listOfCars.Add(new car(drow["make"].ToString(), drow["year"].ToString()));
}
Run Code Online (Sandbox Code Playgroud)

您可以使用listOfCars类似的方式使用数组,并按索引访问元素:

car myCar = listOfCars[3];
Run Code Online (Sandbox Code Playgroud)

如果您必须有一个数组,请在完成"添加到列表"后通过调用列表上的ToArray()创建它:

// ... Add as above...
car[] arrayOfCars = listOfCars.ToArray(); // Creates an array from your list
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您只是尝试从DataTable中分配和构造数组,并且在构造之后不需要向其添加元素,则可以使用数组,如下所示:

// Create the array, specifying the total length
car[] arrayOfCars = new car[dtable.Rows.Count];

for (int i = 0; i < dtable.Rows.Count; i++)
{
    DataRow drow = dtable.Rows[i];
    // Assign each car to the specific index within the array (arrayOfCars[i])
    arrayOfCars[i] =  new car(drow["make"].ToString(), drow["year"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

  • @dtb:他呢?从问题中不清楚他是从DataTable完全构建数组,还是手动构建数组,然后从DataTable添加它,可能在以后或单独的方法中添加... (2认同)