繁体   English   中英

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

[英]c# list<t>; how to add objects like a foreach loop but without foreach?

我是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 = new 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-安德鲁

在这种情况下,读取文件的更好方法是使用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,但您的问题尚不清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM