c#列表<;t>;;如何添加像foreach循环但没有foreach的对象

本文关键字:foreach 循环 对象 lt 列表 gt 何添加 添加 | 更新日期: 2023-09-27 17:57:28

我是c#的新手,需要列表和对象方面的帮助。

建议进行严重编辑。。

我真正想做的是

List<Item> MyList = new List<Item>();
Item MyItem = new Item();
MyItem.Colour = "red";
MyList.Add(MyItem);
MyItem.Colour = "blue";
MyList.Add(MyItem);
MyItem.Colour = "white";
MyList.Add(MyItem);

我的列表现在将包含3个元素——红色、蓝色、白色。

我想我可以通过以下方式做到这一点:

Item MyItem=新Item();

MyItem.Colour = "red";
MyList.Add(MyItem);
MyIten = new Item();
MyItem.Colour = "blue";
MyItem = new Item();
MyList.Add(MyItem);
MyItem = new Item();
MyItem.Colour = "white";
MyList.Add(MyItem);

再次,这是简化的。有了我的真实数据,就有了更多的元素。

我会试试的;

TIA-Andrew

c#列表<;t>;;如何添加像foreach循环但没有foreach的对象

在这种情况下,读取文件的更好方法是使用StreamReader来包装从中读取的FileStream。StreamReader允许您每行遍历文件行,而无需事先读取整个文件。

所以你可以这样做:

while((var line=streamReader.ReadLine())!=null){//在此处遍历文件}

在while循环中,您可以设计一个简单的状态机,根据您在文件中的位置读取头、作业或作业详细信息。

根据您的描述,我猜您存在范围界定问题。你的代码应该是这样的。。。请特别注意每个变量的设置位置。此外,对于这些类型的场景,创建一个名为Parse的静态工厂方法通常很有帮助,该方法从字符串构造对象。

string line;
System.IO.StreamReader file = new System.IO.StreamReader(filename);
Job myJob = null;
Detail myDetail = null;
while((line = file.ReadLine()) != null)
{
    var lineType = getLineType(line);
    switch(lineType){
        case Job:
           myJob = new Job();
           break;
        case newDetail:
           if(myDetail != null)
           {
               myJob.Details.Add(myDetail); 
           }
           Detail myDetail = new Detail();
           break;
        case continueDetail:
           //set some detail properties
           break;
   }

}

再来一次

List<Item> MyList = new List<Item>();
Item MyItem = new Item();
MyItem.Colour = "red";
MyList.Add(MyItem);
MyItem = new Item(); //<-- this is what you are missing
MyItem.Colour = "blue";
MyList.Add(MyItem);

HTH,但是你的问题有点不清楚。