簡體   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