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

标签 c# winforms arrays .net-3.5 datatable

鉴于此 example :

 // 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)
     };

我试过这样的:

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

如何在循环遍历数据表时向数组添加额外数据?

更新 1:

我采用了@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()); 
} 

最佳答案

数组一旦创建就无法添加元素。不使用数组,而是使用 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)
 };

然后你可以这样做:

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

您可以使用 listOfCars就像你会使用一个数组,并通过索引访问元素:

car myCar = listOfCars[3];

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

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

编辑:

如果您只是尝试从 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());
}

关于c# - 使用 for 循环将自定义对象分配给数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039980/

相关文章:

c# - 它的选中状态是怎么去掉的?

c# - 嵌套泛型 <T1<T2>>

c# - System.Windows.Forms.DataVisualization 命名空间在一个类中很好,但在另一个类中却不行

php - 简化将 html 下拉列表的选项值检索到 php 数组中的过程

javascript - 如何识别字符串中的第一个字符是否是Javascript中的数字

c# - 从 StreamingAssets 文件夹中读取 json 文件

c# - 当我们在 C# 中重新分配数组时,数组的值是否被破坏?

c# - 工具提示出现在表单/窗口后面! (C#/VS 2008)

c# - 为什么 Method.Invoke 会生成未处理的异常?即使使用 TargetInitationException 也无法捕获

c - C 语言中字符数组的工作原理