[英]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.