2012-03-22 81 views
0
ArrayList demo = new ArrayList(); 
demo.Add(tbxProjName.Text); 
string DatabaseFieldValues; 
foreach (string dataType in demo) 
      { 
      DatabaseFieldValues = dataType + ","; 
       Response.Write(DatabaseFieldValues); 

      Session["DatabaseFieldValuesSession"] = DatabaseFieldValues; 
      } 
Response.Write(Session["DatabaseFieldValuesSession"]); 

在這段代碼,關於foreach循環和ArrayList

在foreach循環中,我能打印的ArrayList中的所有項目,我在會話中存儲該字符串,但是當我打印thae會話值它僅打印數組列表的最後一項。

我怎麼能存儲在一個會話ArrayList中的所有項目?

+0

順便說一句,可以考慮使用列表這給出了一個強類型集合,而不是它現在非常過時的ArrayList。 – 2012-03-22 13:35:21

回答

1

使用以下代碼:

ArrayList demo = new ArrayList(); 
demo.Add(tbxProjName.Text); 
string DatabaseFieldValues; 
foreach (string dataType in demo) 
      { 
      DatabaseFieldValues += dataType + ","; 
       Response.Write(DatabaseFieldValues); 
      } 

Session["DatabaseFieldValuesSession"] = DatabaseFieldValues; 
Response.Write(Session["DatabaseFieldValuesSession"]); 

代替DatabaseFieldValues =的dataType + 「」;你應該使用DatabaseFieldValues + = dataType +「,」;

,因爲你要添加的數據類型這是非常重要的。

0

你覆蓋你的會話值的每個遍歷到最後一個項目,因爲您的誤操作串交流聯繫。

你必須記住,字符串是不可變的 - 當你加入一個新的字符串到最後改變它,結果是一個新的字符串,而不是原來的修改。這就是+ =改變的原因,它將串聯的新字符串結果存儲到原始字符串中。

ArrayList demo = new ArrayList(); 
demo.Add(tbxProjName.Text); 
string DatabaseFieldValues; 
foreach (string dataType in demo) 
{ 
    DatabaseFieldValues += dataType + ","; 
    Response.Write(DatabaseFieldValues); 
} 
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues; 
Response.Write(Session["DatabaseFieldValuesSession"]); 

此外,我會建議你每次做

Session["DatabaseFieldValuesSession"] = DatabaseFieldValues; 

時間正在從ArrayList擄到一個強類型集合

IList<string> demo = new List<string>(); 
demo.Add(tbxProjName.Text); 

Session["DatabaseFieldValuesSession"] = string.Join(",",demo); 

Response.Write(Session["DatabaseFieldValuesSession"]); 
0

要更換的最後一個值考慮做這樣的事情

Session["DatabaseFieldValuesSession"] += DatabaseFieldValues; 
0

或替代+=使用yield進行調查。

+0

這是一個完整的非限制。 – asawyer 2012-03-22 16:00:04

+0

關於OP的上下文,請解釋它是如何不受限制的。 – SkonJeet 2012-03-22 16:16:01

+0

您不能在方法的上下文中產生返回,並且它實際上不能解釋或解決問題。我沒有投票或任何事情,這是很好的瞭解。 – asawyer 2012-03-22 17:27:22